lexer: show correct span on unrecognized token start

Fixes part of #7048.
decoder: better error message when failing to look up an id
ty: several small fixes to is_instantiable

* Don't return early, so logging is not skipped
* Remove one allocation
* Indent the match statement correctly
auto merge of #7058 : Blei/rust/fix-7048, r=bstrie