File class members are encapsulated, and internal lock was added.

A lock was added to the file class to properly handle multiple threads accessing the self encryptor. Actual chunk storage and incrementing is still a work in progress.

This technically completes JIRA ticket MAID-153 too.
This code is a perfectly fine example of the [non-virtual interface idiom](http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Non-Virtual_Interface), so the following is just a suggestion.

We can get rid of some of the boilerplating by removing `Put()`, and have Path call `PathPut()` directly as we no longer do scoped unlocking anymore. Path can be made a friend of Path::Listener if we want to keep the virtual functions private.