Updated the web-api to support long transactions and added the Merge web api command.

Changed all web-api commands to support running off of a transaction.
Added Merge which supports checking for conflicts, a dry-run option which sends back what will change in the merge and merge itself with the no-commit option.
Fixed a bug in ReportMergeScenarioOp where removed features weren't being added to the unconflicted list.
The previously stated bug fix caused a test to fail which revealed a problem with the RevTreeImpl class where if the tree was empty when it was read in it would be created with an empty bucket list instead of Optional.absent() which was causing it to list a feature as removed twice when DiffTree was called.
Made a fix to the writeConflicts function.
Working on refactoring Merge in the web-api.

Added conflicts to the response of status through the web-api.
Added checkout to the web-api.
Updated Merge command to return both the new commit it made and the report for the changes made in that merge.
Updated merge and log web-api commands.

Added firstParentOnly option to log.
Removed hack for merge so that it will work when conflicts are store on transactions.
Fixed SquashOpTest to use the new MergeReport class that merge returns.
Added SRS to the responses that include geometry, namely the diff with geometry and merge responses.
Made the AbstractWebAPICommand class actually abstract.
Merge remote-tracking branch 'origin/pr/309'
Merge branch 'master' of github.com:opengeo/GeoGit