Move feature types into class hierarchy

Also add some additional tests