Bytecode format
---------------

The bytecode file is composed of the following sections:

 * HEADER: 16-byte header
            [0:3]:  Magic
            [4]:    VM format
            [rest]: Reserved for future use
 * TABLE_OF_CONTENTS: list of 8 records pointing to each one of the sections
            Each record (6 bytes):
            - Pointer to section: 4 bytes
            - Number of records in section: 2 bytes
 * [0x0] Constants indexes: pointers to each of the constant locations
            * Table of 4-byte constant indexes with pointer to constant
                (counter start at beginning of raw constants)
 * [0x1] Functions indexes: Pointer to functions within the code
            [0:3]: function pointer (counter start at the beginning of executable code)
            [4:5]: number of parameters
            [6:7]: number of local variables
            [8:b]: function size
 * [0x2] Constants raw data
 * [0x3] Code: executable code
 * [0x4] Debugging info
            ???

The max file size is 2 Gb.

## Values can be encoded in the following ways:
 * The type is defined by the operator.
 * Encoding varies according to the type:
    int:    use protobuf format
    float:  4-bit floating point
    string: int-defined length, followed by the string proper - no null terminator
 * Constant indexes and function ids are encoded as ints
