Complete issue #125 - Port Context implementation

- Add IContext interface which is equivalent to Java Context interface.

- Manager object now accepts an IContext object instead of a directory
path for storing the database.

- Add DefaultContext which is a default implementation of the IContext
interface. The current implementation of the DefaultContext doesn’t
return a NetworkReachabilityManager object as the
NetworkReachbilityManager will be vary by different platforms.

- Add LiteTestContext for unit testing.
Why can't we just add an optional third `INetworkReachabilityManager.cs` parameter, instead of creating an entirely new class just to hold one new value? There are a number of reasons to do so. At a minimum directoryFile and the reachability manager could just as easily have been added to `ManagerOptions`.