Modify, separate and add benchmark tests

I have separated `starts_with_incremental_length` to
`starts_with_same_vector`, `starts_with_single_element` and
`starts_with_diff_one_element_end` and `ends_with_decremental_length`
to `ends_with_same_vector`, `ends_with_single_element` and
`ends_with_diff_one_element_beginning`. In addition to that, I've
added `contains_last_element` benchamrk test and modified `push`
benchmark test to push a constant value.
Remove NonCopyable::new

The issue that required it has been fixed.
Add Win64 calling convention.
Use the correct calling convention for extern rust functions.
Don't use win64 calling convention on 32-bit machines.
add an initial `Gc<T>` stub with the API
update manual to reflect &'lifetime syntax
Make BytePos 32-bit
Fix parsing tests
Remove ty_mac
Fix --local-rust-root option on Windows
remove segmented stacks from the manual
`std::ptr::read_ptr` now takes `*T` instead of `*mut T`

Closes #10579
Process ffi generics in rustdoc

This prevents an assertion from being tripped because the generics weren't
categorized.

Closes #10597
Merge branch 'master' of github.com:g3xzh/rust