Toward immutable data structures

Immutable data structures ensure thread safety and tend to simplify program flow. For example, there is no reason that an OutputWriter would modify a Result, so it should not be allowed to do it.

This commit is still work in progress and will be squashed before a PR is sent. Comments are welcomed.
Removed all direct references to HashMap (replaced with guava Maps.newHashMap())
Removed dependency Query -> Server
Query is now immutable (but exposing a collection of mutable OutputWriters)

I had to update Jackson version to use Guava datatypes. This update  has been done only to the Maven dependency, not yet reported to the Ant dependencies versioned in Git. Code has been adapted in the few places where latest version was not backward compatible. Current tests are still passing, but some more tests should be done to make me confident that I did not break anything.
Server is now immutable
Merge pull request #175 from jmxtrans/toward-immutable-data-structures

Toward immutable data structures