Don't loop infinitely on 0-size structs in repr

Closes #7625
Added overloaded Add and Sub traits for pointer arithmetic

Implemented ptr arithmetic for *T and *mut T. Tests passing
Add an identifier to TypeParameterDefs and use it to pretty print type parameters
auto merge of #7631 : MarkJr94/rust/ptr_arithmetic, r=thestinger

Added Add and Sub traits for pointer arithmetic. Any type that is a ```std::num::Int``` can be added to or subtracted from a pointer. Also my additions did not require any unsafe code, and the operators themselves are safe. Fixes #2122.
auto merge of #7698 : nikomatsakis/rust/issue-2951-type-parameter-names, r=cmr

Fixes #2951
auto merge of #7683 : alexcrichton/rust/issue-7625, r=thestinger

Closes #7625
term: Add new function .attr() to toggle terminal attributes

Also add .supports_attr() to test for attribute support without writing
anything to output.

Update .reset() to use sgr0 instead of op.
Give term.fg() and term.bg() a bool return value