Maid 271 Windows Permissions

This patch will convert Posix ACLs from MetaData to a windows ACL list and then verify access privileges to the appropriate functions. Since every file/folder in drive is currently marked as read/write to the owner only, this patch will restrict access to drive to the user that mounted in windows. No other user will be able to view or modify the contents of the drive. This patch is pretty large, and might need to be held off until drive_v2 is merged into next (talk to Prakash).

I would also like feedback on the error handling. I decided to throw exceptions if a windows function failed - this should only happen in extreme circumstances (bad parameter or out-of-memory, etc.). expect<> might be preferrable here, but its not available, and the error cases should truly be rare.
`PSECURITY_DESCRIPTOR` is a typedef to `void*`. Originally I tried using `SECURITY_DESCRIPTOR` as the argument to `unique_ptr` which is a struct, but one of the windows functions used returns a PSECURITY_DESCRIPTOR which is then passed immediately to the unique_ptr. Rather than doing a cast to `PSECURITY_DESCRIPTOR` (`void*`) I chose to accept `void*` to unique_ptr. Since all operations are done by windows functions which take `PSECURITY_DESCRIPTOR`, never referencing `SECURITY_DESCRIPTOR` didn't seem like a huge deal (other than the confusion in this area of the code).