Simplification/cleanup of map state API

Some changes I accumulated while porting easing to native.

/cc @mourner
The test was incorrect and the code had a bug -- I split this change out in 03d853a21735e12382dfcfa6fcac92e0ec265f0b.