C3POStorageManager process a transaction with Storage.

Provides a Storage implementaion of the C3PODatamanager service. It
receives a transaction of operations on external (most-likely Neutron)
models, translates them into equivalent MidoNet model operations, and
persist them with the Storage service.

C3PODataManager also needs to track of the past processed C3POTask ID.
The patch introduced a new StorageManagerState Protobuf message, which
is just a container message for holding a last processed task ID. This
information is stored in Storage and maintained (updated) with a
PersistentOp appended at the end of each multi() operation passed to
Storage.

NOTE: flushTopology is to be implemented by a separate patch.
Fix MN-2999

Change-Id: I28a5f8b59c49fa138c3abddef5632cce98af5795
Merge "C3POStorageManager process a transaction with Storage."