Changed Serializer to use Encoder and Decoder types instead of OutputStream and InputStream.
Added method of encode/decode a long to Encoder and Decoder.
Fleshed out the Encoder and Decoder interfaces to add some primitives and some more test coverage.
Encode the selection reason using a byte rather than a short.
Use the convenience super class for unit testing the serializer implementations.
Added method to encode/decode a binary array (ie data + length)
Changed all the Serializer implementations that were using DataInput or DataOutput to use Encoder and Decoder instead.

- Removed DataStreamBackedSerializer.
- Changed some serializers so that they create less garbage.
- Write a byte instead of short in a few places.
Added methods to encode/decode an int that represents a size (ie likely to be small and positive). The Kryo backed encoder uses a variable length encoding for these values.
Use the encoder to flush to the backing stream, instead of flushing the stream itself, so that the encoder can buffer stuff if it likes.
Capture git branch and commit id for performance tests.
Moved details for each performance test to a separate page and simplified the front page of the performance test report.
Include a chart of execution time history in the performance test report.
Some tidy-ups to the performance test report.
Fixed forking ant-task java compilation (eg when doing scala joint compilation) when running from a stand-alone jre installation on windows.
Use JGit instead of the `git` command to determine the current branch and commit id.
Pushed the logic for finding the jre install for the current jvm down to the Jvm class. Also fixed the logic so that it finds the standalone java 5 jre on windows.
Don't run this for java 5.
Ignore some broken performance test samples for 1.7.
Moved the firing of the 'new dependency' event up to live closer to where all the other events are, rather than hidden in a getter method.
Inlined TopLevelDependencyManagementServices into DependencyManagementServices.