Refactored caching into an ODataContext.

The ODataContext class has been introduced to manage caching for the OData parser. This class can be used directly or implicitly through ODataParser.

Bug: #12