First Draft: Uploads as part of Bolt\Application

Uploads is the last major feature that is still handled by a standalone script so this is an attempt to fix that by bringing them into the main app. The obvious benefits of this will be a lot more flexibility for those that want to do more advanced configuration, but the PR also ensures transparent backwards compatibility with all existing installs.

An upload controller sits on /upload that by default uploads to /files. Also exposed is a container object at `$app['upload.container']` which by default writes to the local filesystem, but can easily be swapped out to write to any other service (I already have a FlysystemContainer coded and nearly tested that allows access to AWS S3, Rackspace, Dropbox, Ftp, Sftp, Zip and WebDAV ).

Whilst `files/` is the default namespace this now adds the facility to put uploads in multiple namespaces either at form level (by posting to /upload/yournamespace) or at application level by modifying `$app['upload.namespace']` this will in turn ask the resource manager for the path which you can provide by having set `$app['resources']->setPath('yournamespace', path/to/your/namespace)`.

Another request was to modify the file prefixes, this is exposed at `$app['upload.prefix']` and defaults to the current functionality `date('Y-m')` but this can be swapped out to any value or callable, for  example one that returns a prefix for the current user id.

It's also been made with testability in mind, everything works with a simulated request so file uploads can be unit tested and there's a few in this PR.

Be interested in feedback / discussion.