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
I think he meant `@safe pure nothrow:` as the first line in the body of the struct. But yeah, this is a known bug (I can't remember the bug number now, but you can search for it in bugzilla) that an attributed struct's attributes aren't transitive to its members, which is very misleading.