Generics

Java [doesn't seem to let](http://stackoverflow.com/q/4290878/550706) you write `enum SettingType<T>`, but you can still make the constructor take a type parameter and check it there. I left the assert in, but I think this patch makes it unnecessary.