Allow multiple peers/engines in a single process

Seem to have fixed all segfaults, make sure to use multi-threaded boost libraries if you run into issues
add example for pinned collections

tested and working (codegen needs a quick fix for static members)
Implement special loader for q3

and peer_by_hash

q3 compiles now.

We will need to alter deployment scripts to place multiple peers in the same process.
Initialize static members outside of class scope
Fixed q3. tested on small example
insertEffects: refactor numbering in preprocessing
insertEffects: bettern numbering for preprocessing of effects signatures
runtime: cleanup includes
runtime: format serialization according to namespace conventions
runtime: support address serialization via string
runtime: added serialization for shared_ptr

We serialize by getting the pointer out of the shared_ptr. This means
that no notion of sharing is kept -- if you serialize a shared_ptr once,
and then serialize the same shared_ptr again, it'll create 2 different
structures when deserialized. This should be fine for our purposes (at
least for now). There's no way to get at the sharing information, even
if we convert to boost::shared_ptr locally, so the only way to keep sharing info
(if we want it) would be by using boost::shared_ptr instead of std::shared_ptr
runtime: added std qualifier
added patcher for unit_t
insertEffects: cleaned up warnings
cppgen: make 'processRole' always be generated with const ref

This allows rsfull.k3 to be generated without optimizations.
Added inference for named addresses to HMTypes
Profiling for q2
Merge branch 'master' of https://github.com/DaMSL/K3-Core
Clean-up Str implementation, add more constructors/substr.
Provide base_string conversion to std::string.