Add Flags template

Flags is a typecons template for storing OR combinaton of enum values in a type safe fashion.

I think that the possibility to use bitwise operation on enums is a bit of a hole in D type system;
Flags provides a type safe alternative modeled after Qt's Q_FLAGS
Inside a template, `Flags` is an alias for `Flags!(E,Force)`, so you don't need to repeat that here. It's also more future-proof -- if you change the template arguments you don't have to update every single method that refers to the actual type.