[WIP] datastore: Protobuf switch

DO NOT MERGE!

I practically started to work on protobuf switch for datastore and blocked by Protobuf.js again.

This will be the first part of changes related to protobuf. We also need some internal cleanup and remove unit tests that are covered by regressions.

Just because Protobuf.js doesn't have getters/setters, our code base if full of underscored var names.