Dino catalog2

FilteringEnumerable library: Wraps Enumerables with filters against reader methods, providing filtered views of enumerable contents
TokenSelectable: Mixin provides a class with factory method returning instances corresponding to input tokens
Dinodex library: Data domain of dinosaurs, including constrained sets of data items describing characteristics dinosaurs that can recognize input tokens corresponding to their value and print themselves for output
Dinodex::CSVLoader: CSV file processor constructing dinosaurs
Dinodex::CommandLineInterface: User input  processor that builds a filter to apply against dinosaur list

example:

dino_catalog.rb -f dinodex.csv -d continent=Africa -f african_dinosaurs.csv -l -j -p cretaceous

I don't like this pattern of either returning a value or purposefully returning `nil`. From what I can tell, you're either returning a specific type of carnivore, though, additionally, `diet.carnivorious` isn't that representative of this, or returning nil if the dino isn't a carnivore at all. Maybe we should rethink this to just returning the type of diet in general, i.e Generic Carnivore, Pescivore, etc, and if not of those, then it'd be Herbivore