Making returned sets immutable

Fixes #21 

Whenever a collection is returned from an object it should be returned
as an unmodifiable collection.  This keeps anyone outside of the object
from modifying the collection in any way.