Raise pickle.UnpicklingError when loading an item from memo for invalid
input

The previous code was raising a `KeyError` for both the Python and C
implementation. This was caused by the specified index of an invalid input
which did not exist in the memo structure, where the pickle stores what
objects it has seen. The malformed input would have caused either a `BINGET`
or `LONG_BINGET` load from the memo, leading to a `KeyError` as the
determined index was bogus. Patch by Claudiu Popa
