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
It is intentionally permitted (as shown in the documenting unit test).
I was uncertain about this but the point was made the many existing enums, that would otherwise be validflag enums, include a None value.
The documentation is outdated, I will fix it in the updated pull request.