Derive Clone for TypeId.
auto merge of #18731 : chris-morgan/rust/derive-Clone-for-TypeId, r=alexcrichton
Try to remove ty_nil, some kind of error in exhaustiveness checking
Complete the removal of ty_nil

1) Change #[deriving] and format! to never produce PatTuple(vec![]) nodes.
2) Update librustdoc.