libserialize: add fail_here() to `Decoder`

A quick and dirty fix for #15036 until we get serious decoder reform.

Right now it is impossible for a `Decodable` to signal a decode error, for example if it has only finitely many allowed values, is a string which must be encoded a certain way, needs a valid checksum, etc. For example in the `libuuid` implementation of `Decodable` an `Option` is unwrapped, meaning that a decode of a malformed UUID will cause the task to fail.
I would have thought that this should be something along the lines of:

```rust
fn error(&mut self, err: &str) -> E;
```

Generating a `Result` isn't necessarily what this is doing, and `fail` may mislead some into thinking that it invokes `fail!()`