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.
Since comparing `open_count_` to 0 was so common I added an `IsOpen()` function to `File::Data`. I think this is clear now that `HasBuffer()` was added, but you might want to look it over again.