Use boost unordered_map instead of std::unordred_map

Boost version runs faster... according to euler tests.
Specialize str.join when the target uses random access iterator

Runs faster as it becomes possible to reserve enough memory.
Fix bug in constant expression analysis

Some nodes were lazily evaluated, which is not correct.
Improve implementation of __builtin__.str for long and float

stringstreams are overkill there.
Fix typo in euler23
Improve performance of str.replace implementation
Cleaner exception handling in ConstantFolding
Minor update

* move semantic for shared_ref
* avoid a copy in dict iteration
Add more char/string comparison operators