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
Agreed, it's pretty clunky and not much fun to use