Crypto::Point API for Curve25519

So I've been learning a little bit more about Edwards curves, and I was
thinking about the OpenSSL::PKey::EC::Point API (as horrid as that name
is, and as horrid as the API is) and thought this might be another way
to rework scalar multiplication into an object oriented API.

How did it turn out? OK, I think, it's object oriented, but not really
arguably better except that with another line of code it could have some
(somewhat useless) support for encodings. I left that out for now, but
you can see how with the standard group element constant declared as
hex being able to decode hex would be nice (many on the #tahoe-lafs
trolled the previous serialization which started "\t\0\0..." ;)

One thing I don't like about the API is that apparently the commonly
accepted ordering for group multiplication is:

    integer * Point

This API forces:

    Point.mult(integer)

Which is effectively backwards.

I didn't preserve the original class methods, but with the ability to do
Crypto::Point.base.mult(integer) I really don't think it matters.
Can't touch this
Can't touch this either

We should probably be doing this everywhere, actually...
Could probably use one of these too
Crypto::Point#to_str

I think this removes the main remaining objection to this API
Documentation for Crypto::Point

Now that I understand elliptic curves just a little bit better, I think
I'm actually able to explain this stuff better too. Yay!
Merge pull request #30 from cryptosphere/points

Crypto::Point API for Curve25519