Wrong keys

made the error messages more clear when input contain unexpected keys

this is on top of original pull request by Rogdham to improve messages for values

tried merging with  halst:master but it's currently broken, some tests are failing there (probably connected to Optional() fix), so I'll leave this out for now...