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 was a fun one to attempt - its not possible to "see" the error in the test case. If `DataBuffer` refuses to hold chunks, the `SelfEncryptor` will suppress the errors in the close method. It was difficult to spot at first, but `SelfEncryptor` uses std::async to copy the chunks, and then uses wait to signal when its complete. Wait does not rethrow exceptions that ocurred in std::async. All is not lost - once Drive properly stores data (something still not yet done!), it will throw in the `DataBuffer::Get` call that is required for the drive `File` class to store on the network.

I pushed the test I had written for this case, which should need to be updated once the chunks are actually be stored.