Lots of changes in all areas of project

  - CPU
    - register set reduced, only 16 registers available
    - instruction descriptors refactored
    - cleared code of various branching instructions
    - many instructions now accept immediate value as an operand (call, add, sub, in/out, ...)
    - new branching instructions: bge, ble, bg, bl
    - new arithmetic instructions: mul
    - two versions (immediate vs register) of branching instructions no longer necessary, united into one for each condition
    - tweaking of cpu FLAGS register to support more branching instructions
    - register access refactored and simplified

  - memory
    - memory page access flags are no longer stored in memory but in each MemoryPage object. Therefore flags are no longer accessible from running code
    - memory header dropped, addresses of tables are stored in MemoryController object

  - assembler
    - macros and variables are supported
    - .rodata section
    - new data types - byte, ascii, space
    - refactored code A LOT - label manipulation, reference replacement, variable/space/symbol allocations and handling, better parsing of input
    - patterns are precompiled and recycled, which is much more sane than the first version :(
    - little bit more debugging messages added
    - 3rd pass is mandatory
    - assembler can produce preprocessed output only
    - assembler will refuse to overwrite source files

  - objdump
    - prints data in nice tables instead of long lists
    - can dump just specified info - sections, symbols, disassemble, ...

  - IO
    - all terminal IO related bits moved from irq to io class
    - terminal IO works, both directions

  - running objects can save their state. This will be used for debugging purposes - saving and examining dumps in case of exceptions, ... - and for pausing and restoring of the whole VM
  -  all files that ducky can read/write have the same ancestor
  - bytecode file sections have extra field for size and for item count - no confusion anymore