Improve Stats.Sub()

Few tweaks to Stats.Sub() to make it more usable.
* Return the receiver stats fields that aren't subtracted (rather than zeros)
* Subtract TxN
* Guard against nil pointers

@benbjohnson 

/cc @snormore @charlescng 
@mkobetic It seems like we should be returning `*other` instead of a zero'd out `Stats`