Gitignore .rspec
Run specs in a random order

Running the specs in a random order will help us uncover order-dependent
tests.
Use a constant to keep track of the default constraint (>= 0.0.0)
Add Dependency#to_s
Use Constraint#coerce instead of repeating the ternary operator
Use Version#coerce instead of repeating the ternary operator
Remove the ability to delete items

To the best of my knowledge (in searching both Berkshelf and MB), the
ability to remove artifacts/demands from the graph.
Update the API for Artifact

This commit updates the API for to be more "Rubyesque". It also includes
some minor performance enhancements and caching.
Use Constraint.coerce in Demand
Use Constraint.coerce in Dependency
Dependency style fix for ==
Eagerload @version for Constraint

Formerly, if a Constraint is frozen, calling #version would raise an
exception because it lazily cached the the version and saved it to an
instance variable. This commit eagerloads the version attribute and uses
an attr_reader instead.
Use << to build Constraint#to_s

`<<` will append to the string, whereas `+=` will create a new string.
Constraint style update
Update the graph API to be more Rubyesque
Update the Serializer to use the new Graph API
Fix failing specs
Require the new universe class
Force a default constraint (the user could pass nil)
Check Constraint#empty? too