ECPair: replaces ECKey/ECPubKey

This is a `2.0.0` PR.

Mostly just wanted opinions on this design vs the original `ECKey`/`ECPubKey` design.
I personally prefer it, and the semantics are quite strong so despite the optional constructor argument either way; it does make life a lot simpler.

It also simplifies a fair amount of code IMHO.

Open to comments/discussion. @weilu, @jprichardson?
I'd prefer the name of this function to contain `publicKey` or `pubKey`. This class represents a "key pair" therefore I expect there to be a public and private key. `toWIF` and `fromWIF` already requires some knowledge of bitcoin, it's only acceptable because the format implies private key. However `encodedPoint` tells nothing about the format and requires knowledge about ECC which is one abstraction lower than what I expect the API users to deal with.