Simplification/cleanup of map state API

Some changes I accumulated while porting easing to native.

/cc @mourner