Fix a weird bug because I'm accidentally mutating the name string on the spec object.

This makes the gem not show up the next time you query.
Try to raise an early error when the gem doesn't exist.
First pass on integration tests and a top level API.