Begin adding ECDSA support.
Add ECDH package.

The package encrypts data using ECDHE with AES-128-CBC-HMAC-SHA1;
this matches the other components. The curve used is P256 to match
the use of AES-128. The Go ECDSA package is used; no signatures are
done, but it presents usable PublicKey and PrivateKey types that are
useful for this system.
Add ECC support to passvault.

This adds code to handle ECC records; the RSA code remains intact.
While old password records are not affected, new records use ECC. Due to
the use of public keys to encrypt a KEK that is then used to encrypt
data, there is no visible change to end users. A user with an RSA key
can interact and share a secret with a user who has an ECC key.

The bulk of this commit simply adds cases for handling EC records.
Add ECC support to cryptor.

There are a few changes made here:
  * Comments have been updated to reflect the presence of ECC records.
  * Variables named rsa* have been renamed pub* to reflect the general
    use of public key cryptography, instead of RSA specifically.
  * An if statement for RSA keys now handles both RSA and ECC keys.
Add ECCRecord support to keycache.

This commit adds ECC cases to functions checking for RSA records.
Additionally, the rsaEncryptedKey variable is changed to pubEncryptedKey
to reflect a general use of public key crypto.
Update core_test to check for DefaultRecordType.

In the passvault, the default type of public key cryptography is
selected via a variable. The core test has been changed where it relies
on RSA specifically to check for the default record type.
Cleanups based on feedback from pull request.
Move {En,De}cryptCBC and MakeRandom to symcrypt.

The symcrypt package now contains common secret-key code that is
redefined in a number of packages.
SHA256 the ECDH shared key

This ensures the shared key is a more uniform distribution than just
taking the bytes from the shared X.
Merge pull request #22 from kisom/ecdsa

Add ECC support