Validation Fixes

This pull request makes some mild progress towards improving the quality of the point validation functions.
Most of the important issues have been discussed on IRC, but some key points where things will need to change in the future:

* Change `params.curve.params` to be `curve.params`, that is, return a curve object from `names.js`, not a parameters object.

* Move all the group operations to this new `Curve` object.  Remove the `Point` object completely.
It is just bloat, and *there* should never be a case where two points are not in the same curve context and group operations performed.  So it is useless storage.