Cleanup FirmConstructor

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

Visitor cleanup