manifest: split manifestdict into high-level and low-level logic
The low-level logic type (_lazymanifest) matches the behavior of the C
implementation introduced in
a5f1bccd. A future patch will use that
when available.
manifest: do parsing inside manifestdict contstructor
This shape to the code will make using a C implementation of the
manifest storage easier.
manifest: move parsing functions up in file
These functions are about to change signature and be hidden inside the
manifestdict constructor. Doing the code motion now as an isolated
change to make things easier to review.
dispatch: offer suggestions of similar-named commands
When suggestions are available, we show those suggestions instead of
showing some help output.