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
A value as ```aOrB``` is exactly what is wrong with enums in D; but they do indeed exist, so we have to behave correctly with them.
I modified the code as you suggested, thank you.