Optimize ScalarBaseMult

Code uses the binomial expansion strategy which eliminates doublings.
All the basepoint doublings are computed beforehand to assist in the base multiplication.
Main function is computeDoublingPoints which computes all the doublings of the generator point G up to the size of the curve's bit size (for secp256k1, that's 256).

Also fixed a spelling error in a benchmark test.

Results so far seem to indicate the time taken is about half what it was before.

Closes #2
`k` is an arbitrary length integer.  Thus, when it's bigger than the length of the `doublingPoints`, you'll probably want to fall back to using `ScalarMult`.  Otherwise, this will panic when a larger integer is given.

```Go
// Fall back to slower generic scalar point multiplication when the integer is
// larger than what can be used with the precomputed table which enables
// accelerated multiplication by the known fixed point.
klen := len(k)
if klen > len(curve.doublingPoints) {
	return curve.ScalarMult(curve.Gx, curve.Gy, k)
}

// What's there now, except use klen instead of len(k).
```