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.
Add fix for the issue #103

Add checking null for the LocalDatabase in Stopped(), GoOfflie() and GoOnline() method.
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.
Add fix for the issue #103

Add checking null for the LocalDatabase in Stopped(), GoOfflie() and GoOnline() method.
Rebase and fix conflicts
Refactor not to implement Context interface

Instead of implementing Context interface, add
NetworkReachabilityManager as a third optional parameter to the Manager
Constructor.
Merge pull request #167 from couchbaselabs/issue-125

Complete issue #125 - Port Context implementation