Fix webserver memory leak

If the webserver is passed an If-Modified-Since value, which indicates
the client has the current file, there is nothing to send, the code leaked a
context object.

To fix this I've converted a couple of items to smart ptrs.

The context is now an auto_ptr, and if it's used with the mhd callback
we can pass ownership by using release, otherwise it'll get destroyed on
exit of the function.

Also in the context, the CFile object is now a shared_ptr<CFile>, note
that the Close call is carried out in the CFile destructor.

This should make sure that appropriate cleanup occurs as things go out
of scope, without needing to have all the right deletes in the right
places.

In the free callback move the delete before the trace line, so that we
can be sure everything has been closed and freed when that trace line
occurs.