Adds tab complete for commands

Adds a tab complete for all commands that completes subroutes and option names when applicable. Does partial matching.

With registered routes:

`/command route1 route2 route3 -abcdef?`
`/command route1 route2 -fh?`

The following is returned:

`'/command route1 '` -> `[route2]`
`'/command route1 route2 '` -> `[route3, -f, -h]`
`'/command route1 route2 r'` -> `[route3]`
`'/command route2 '` -> `[]`
`'/command route1 route2 -'` -> `[-f, -h]`