MiniJSON specification
======================

MiniJSON is a binary encoding for a subset of JSON that:

* has no keys longer than 255 bytes UTF-8
* has no string values longer than 255 bytes UTF-8
* has no lists longer than 255 elements
* has no dicts longer than 255 elements

MiniJSON is bigger endian.

Type Value consists of:

* unsigned char value
* unsigned char * data

* If value's highest bit is turned on, then remains are a UTF-8 string
with len of (value & 0x7F)
* If value's two highest bits are 0100 or 0101, then four lowest bits encode the number of elements,
  and the four highest bits encode type of the object:
  * 0100 - a list
  * 0101 - an object
  Standard representation for an object or list follows,
  sans the element count.
* If value is zero, then next character is the length of the string followed by the string
* If value is 1, then next data is signed int 
* If value is 2, then next data is signed short
* If value is 3, then next data is signed char
* If value is 4, then next data is unsigned int
* If value is 5, then next data is unsigned short
* If value is 6, then next data is unsigned char
* If value is 7, then next data is number of elements of a list, 
 follows by Value of each element
* If value is 8, the value is a NULL
* If value is 9, then next element is a IEEE single
* If value is 10, then next element is a IEEE double
* If value is 11, then next element is amount of entries for
    an object, then there goes the length of the field name,
    followed by field name in UTF-8, and then goes the Value
    of the element
* If value is 12, then next data is unsigned int24