Fix wrong state when leaving insert state in some cases

Example: if you are in base state lisp, then go in
visual state to select some text and then go in insert
state (by pressing `c` or instance), when you leave
the insert state, instead of ending up in lisp state you
end up in normal state.
Add new concept of `base state`

See readme section for more info