libcore: wrappers for size/align_of to act on values without needing explicit ::<type> annotations
auto merge of #5970 : huonw/rust/core-sys-size_of-val, r=pcwalton

This allows one to write
```rust
let x = function_with_complicated_return_type();
let size = size_of_val(&x);
```
instead of 
```rust
let x = function_with_complicated_return_type();
let size = size_of::<ComplicatedReturnType<Foo, Bar>>();
```