The current implementation is too straightforward and verbose. I think it's worth putting the systems into separate "classes" (as far as possible), and simplify the addition of components (if you need an entity with one component, there's no point writing extra code).
For example:
https://github.com/Leopotam/ecs#custom-engine