Implement lightweight object wrappers around typed arrays

They are really lightweight, their only property is "idx" (index
in a raw array). Other properties are defined in the prototype.
They can be used by view or higher level code, when it's more
convenient to use object oriented approach.

Other benefit is that using ES5 getters and setters we don't have
to manually copy properties from arrays to objects (like currently
in .readModelState() for atoms). Client code will read values directly
from arrays thinking that it reads object properties.