refactor the whole project to provide a more structured way to interact with
FMC. Before 1.0.0 all calls to FMC were provided by a `Client` object which was
replaced by `FMC` that provides a hierarchical access to all resources on FMC.
Changed
* Replaced `Client` object with `FMC`
* Provide structured access to api objects. e.g. `fmc.policy.accesspolicy.get`
* Provide more granular error handling using custom exceptions