Add ObserverEffect and Nil* metrics.

See the comment on ObserverEffect in metrics.go for more.

Note that this changes the signature of New* for all metrics to return the interface type.  I remember a discussion on the mailing list long ago that convinced me to change the return value of those functions to a concrete type but I can't recall why and this is a good reason to change it back.