Indexed store; lens revamp

Lenses now actually work with the Swift toolchain as-is (although `ap`/`<*>` for `IxState` is still problematic, as is making `Box` `@final`).  `IxStore` is now a separate type that `Lens` makes use of.

I made sure when making this pull request that all tests passed, and that actually required me to fix a couple of bugs:
- The `Array` `pure` test needed an explicit type annotation to prevent ambiguity.
- Far more seriously, the `MVar` test was dependent on a race condition!  I removed the offending check, but the whole test should probably be replaced entirely with something actually deterministic.