user: reimplement key manipulation

Now the key is an struct, and it's stored in a collection in MongoDB.
api package is still broken.

Here is what this huge change fixes:

	- remove keys by comparing line by line in the authorized_keys
	  file (#79)
	- make key body unique (#76)
	- validate keys. We accept rsa, dsa and ecdsa (#77)

I will close those issues after api package is ok. We will need also a
migration script.
user: return ErrUserNotFound when user does not exist in AddKey
user: readd ListKeys implementation

Sorry about that x)
user: use KeyList type in ListKeys function

This type encapsulates the json marshalling proccess.
user: avoid trailing spaces in Key.String() when the key has no comments
api: fix code to deal with new user package and the new key structure

Fixes #76.
Closes #77.
Closes #79.