PersistentVector, transients, polishing

Not sure, if you want to merge this.. we did several modifications to the codebase, which you may not like

- we removed some tests
- we also removed some Haskell/Scala stuff (such as Option; we rather provide orElse named parameter)
- given that m is PersistentMap and m[k] is not defined, m[k] throws instead of just returning null. We know, that this is different from Dart standards but we hate the 'null policy' more than we love keeping conventions.