rustc: Implement nested C-like enums

Allows for `#[repr(XX)]` on more complex enums.

### Example

```rust
// exception.rs
#[repr(u8)]
pub enum Fault {
    DivideError = 0,
    NMI = 2,
    Breakpoint = 3,
    // ...
}

// interrupt.rs
#[repr(u8)]    // < this is allowed
pub enum Int {
    Fault(Fault),
    IRQ0 = 32,
    IRQ1 = 33,
    Syscall = 0x80
}
```