Refactor some

* Make entity fields private and add one pkg setter
* Introduce proper read-only views through the entity-system methods if
  they aren't already detached by alogrithm.
* cache read-only views
* base internal getComponent on index, not class