Implement __builtin_volatile_load and __builtin_volatile_store

Currently limited to isIntegral types. PODs could work as well, but the current implementation doesn't work with aggregate types (I guess the declarations/members have to be marked as volatile as well? It's quite a mystery to me when GCC uses what flag. For example TYPE_VOLATILE doesn't do anything without TREE_THIS_VOLATILE on the INDIRECT_REF).

Also loading a complete aggregate with such a builtin is probably almost always a performance problem (because of volatile guarantees you always have to load the complete struct, even if only one field is accessed. So it's better to expose a 'flat' API)
Not sure about duplicating this enum here.