Fix first-run crash

SaveAsync() set the command bindings collection to null, but when
reloading it's only reloading the underlying and not the top level so
they're never set back up.
Add CreateInstance(s) to Modules
Use own module instances for input/capture settings

Using shared instances causes issues when they're already in use when
you're connected to the server. Better to create new instances wher we
control the complete lifetime.