Add #[packed] attribute to create packed structs

This adds a `#[packed]` attribute for structs, like GCC's `__attribute__((packed))`, e.g.

```rust
#[packed]
struct Size5 {
   a: u8,
   b: u32
}
```

It works on normal and tuple structs, but is (silently) ignored on enums.

Notes: 
- I couldn't work out a better way to store the packed-ness of a struct than in `ty::sty`.
- I have no idea if this works on any architecture other than x86-64 and i686 (although there's no particular reason why it wouldn't, it's just using the packed attribute in LLVM)
- I feel like there could be more tests, but I'm not really sure what/how to test.

Closes #1704.

~~(I'm not sure about [the XXX in cabi_mips.rs](https://github.com/mozilla/rust/pull/5758/files#L12R188), so merging this should probably wait.)~~ Resolved!