Add a missing case for invlet reshuffling on force invlet assignment.

Fixes issue #2672

There's a tiny other change in there, which is to remove a duplicate call of update_cache_with_item(). The call is unnecessary if reuse_cached_letter is false, and if it's true, the call will be made anyway.
Fix missing final profession in profession list.
iuse::knife: menu() didn't end in NULL but only crashed when built with -O. Also, remembers last menu selection (runtime).
restore: items and monsters save to json

This is stable/tested and was merged in 21e76f9, however removed later. Please test
Merge some bugfixes.