pull ComponentMap into its own file and add spec
add Set and specs
add set member, each, subset and equals methods