Made Option and Result methods more similar

This applies the last reforms on the `Option` type (`as_ref` adapters,
boolean-like chaining methods) and applies them to `Result` too.
For that, I reordered and grouped the functions in both modules, and also
did some refactorings:

 - Renamed the `Result` methods on `Err` values from `NAME_err`
   to `err_NAME` to make the methods flow better into the argument.
   Compare `res.err_unwrap_or(foo)` and `res.unwrap_or_err(foo)`
 - Added more methods on `Result` to make it equal with `Option`
   for non option specific operations.
 - Made the `.expect()` methods be generic over anything you can
   fail with