Extract FileDescriptorApi abstract class from Api

The methods in FileDescriptorApi will be exposed to file descriptor
manipulator implementation. To protect the API methods from other part
of the program that depends on the Api class, the methods are extracted
as the FileDescriptorApi class.
Add file description status API
Merge branch 'feature/enumiterator' into feature/fd
Add EnumSet::to_ulong and to_ullong functions
Add FileDescriptorApi::open function
Merge pull request #108 from magicant/feature/fd

Add some file descriptor handling API functions