New features:
* The syscall pass now resolves syscalls for the input target, provided
that an OS is mapped on the ROM region.
* Formalized the variations of print's arguments as a sequence (tree, to
be precise) of /promotions/.
* Added a short notion of Symbol and SymbolTable, and a loader for them.
Data files of type "symbol" are read as such and provide name to
syscalls or arbitrary addresses.
Code changes:
* The disassembly operation of the command-line interface is now finally
in its own file with more room.
* Encoded the tree structure of promotions as a sequence of (mainly
tail-calling) inter-calling methods in the print pass.
-> The cfg pass loads the function into memory, annotates leaders and
jumps, and resolves delay slots.
-> The pcrel pass currently computes locations for pc-relative moves and
jumps, but does not yet compute the pc-relative moved data.
-> The print pass displays the results of analysis with various layout
and formatting options.
-> The Library class handles the loading and parsing of data files. This
is because any fxos application will use this since everyone will
have only one library.
-> Add a logging function that automatically format()s everything in
sight with basic logging levels and a verbose mode. Standard logs are
prefixed with __func__ for debugging purposes.
-> Allow format() to take std::string arguments for %s by statically
extracting c_str()s.
-> Add a simple timing utility to understand which file load or
disassembler pass takes up the time.