foreach macro for iterating through enum values

Introduction of foreach macro for iterating through enum values. Purpose
of this macro is increase the readability of the code. An example would
be:
```
	foreach(int *i, SOURCE, DESTINATION)
		...
```