Merge pull request #344 from Dicebot/funcattr

Decorator / attribute functions framework
Fix unit test. See #344.
Improve the reverse proxy server.

 - HEAD requests are now handled correctly
 - Using compressed encodings can be disabled for client requests now
 - Client requests are now dome using the fully scoped version of requestHTTP to avoid GC allocations
Fix the cache control header for the HTTP file server.
Allow customizing the content type for HTTPServerResponse.writeJsonBody.
Send a proper "Date" header for HTTP server responses.
Send caching relevant headers also for not-modified responses of the HTTP file server.
add MongoCollection.aggregate helper method
Merge pull request #348 from japplegame/mongo_aggregate

Add MongoCollection.aggregate helper method
vibe.http.rest : example + URL

Change DDOC example for registerRestInterface into documented unit-test, reformat it for better readability.
Add method for URLRouter to check registered routes.
Implement standard way for URL formatting using stand-alone function
rest example: add termination event
rest example: add unittests to verify route paths
vibe.http.rest : remove deprecated 'index' special case
vibe.http.rest : full restyle

Adapt everything to vibe.d standard code style
Localize imports
Improve formatting where it helps readability
vibe.utils.meta.funcattr : add IsAttributedParameter
`funcattr` adjustments for usage with rest module

1) Add new calling overload in AttributedFunction so that it won't
try merging parameter and attribute type tuples when incoming and
target parameter type tuples match exactly. In that cases relevant
parameters are simply overwritten by attached attribute functions.

2) Add diagnostic that all attached InputAttribute functions conform
to stored argument list.

3) static imports added for qualified symbols
vibe.http.rest : add `funcattr` support
Add `funcattr` test case to vibe.http.rest suite

Also makes test suite exit upon finish.