rustc: Enable writing "unsafe extern fn() {}"

Previously, the parser would not allow you to simultaneously implement a
function with a different abi as well as being unsafe at the same time. This
extends the parser to allow functions of the form:

    unsafe extern fn foo() {
        // ...
    }

The closure type grammar was also changed to reflect this reversal, types
previously written as "extern unsafe fn()" must now be written as
"unsafe extern fn()". The parser currently has a hack which allows the old
style, but this will go away once a snapshot has landed.

Closes #10025

[breaking-change]
std: Implement the Buffer trait for some wrappers

This will allow methods like read_line() on RefReader, LimitReader, etc.
mk: Add libcore
core: Inherit the intrinsics module
core: Inherit the mem module
core: Inherit the ptr module
core: Inherit the cast module
core: Inherit the kinds module
core: Inherit the ops module
core: Inherit the ty module
core: Inherit the container module
core: Inherit the char module
core: Inherit the finally module
core: Inherit the any module
core: Inherit the raw module
core: Inherit the default module
core: Inherit the unit module
core: Inherit the clone module
core: Bring clone tests up to date in style
core: Inherit the tuple module