XML Library Usage

Instead of creating XML responses by concatenating strings,XML is instead built using the `javax.xml` library. Created an `XmlDocument` class that handles creating documents and serialising them to strings, along with some helper functions. The following classes extend `XmlDocument` to do something specific:
 - `ErrorResponseXmlDocument`
 - `ListBucketsXmlDocument`
 - `ListObjectsXmlDocument`

As well as that I re-factored a few things:
 - Made a `Server` base class that `S3Server` extends, which separates out non S3 specific stuff (such as binding to a random port, getting query parameters, reading request data, adding headers etc), so that `S3Server` only contains code that directly relates to S3
 - Standardised indenting
 - Improved valid bucket names test by actually trying to create buckets, rather than calling a `protected` function on `S3Server`
 - Removing author type comments from files
 - Improved some variable names
 - Other general tidying up
Perhaps `md5` is a better name, or `md5Digest`. As far as I could tell `md` was just an abbreviation of `messageDigest`. Using a one or two letter abbreviation in place of the real name doesn't help. It's OK when there is only one variable in the direct scope, but when code is added to over time, you don't want to end up with 10 two-letter variable names, it's not very nice. IDEs can auto refactor and auto complete, so abbreviated variable names don't save any typing wither.