replace macro constants with enum types for user facing constants
distinguish between options and defaults
Merge pull request #696 from calid/enum-constants

replace macro constants with enum types for user facing constants