Cleanup FirmConstructor

* Introduce MapExtensions.withPersistentDefault
* Create a visitor per method
Merge pull request #189 from Kha/visitor-cleanup

Visitor cleanup
Split Integer arithmetic test into multiple single tests
Enable local common subexpression elimination in libFIRM

Fixes #173.