Buffer concept

The actual type of the buffer object is set by a macro REST_PROCESS_BUFFER when inlining RESTProcess_base.h A buffer type must conform to the following generic interface

struct Buffer
{
  struct Array;
  template <class T> SimpleBuffer& operator<<(const T&);
  template <class T> const SimpleBuffer& operator>>(T&) const;
  RESTProcessType::Type type() const;
  const Array& array() const
};
where
struct RESTProcessType
{
  enum Type {boolean, int_number, float_number, string, array, object, null};
};
and Buffer::Array must conform to
struct Buffer::Array
{
  const Buffer2& operator[](size_t) const;
  size_t size() const;
};
where Buffer2 is also a buffer concept, but not necessarily the same type as Buffer.