Serialization improvements
Added patch management functionality
Added merge conflict solving functionality
Fix Index.stage() to properly delete trees.

When a whole tree is to be removed from the index, the list of DiffEntries given to stage()
contains the entry for the removal of the tree itself followed by the list of all children of
the removed tree. This patch ignores the child entries for any removed tree so the tree is not
re-created automatically later when removing each of the tree children.
Added support for tags
minor changes to ensure correct handling of file URLs in windows
Working on fixing a problem with removal of features.

Removing all features in a tree would remove the tree as well instead of leaving it empty.
Fixed NULL feature type metadataId on merge ops

In Merge, Rebase, and CherryPick, the DiffTree command wasn't reporting trees, so the feature type trees would end up with a null metadata id.  This prevented the feature type from showing up in the geogit data store in geoserver.
Added Unit test to check for featureType merge.

When merging in a new featureType the metadataId for that featureType would be nulled out.
Added unit test for octopus merge.
Merge now performs a 3-way merge similar to git.

Previously merge was working like rebase, applying the changes of each commit from the ancestor to the head.  This does not work because the Log function does not account for multiple parents.
Fixed a test failure in ReportMergeConflictsOpTest.
change test expectation accordingly to change at 18a68a0c

RevParse was changed at 18a68a0c to return absent instead of throwing an IAE
when a path is given and not found. This patch fixes the corresponding unit test
as it was added on a separate branch.