Added directive preprocessors

Enable looking backwards for previous directives and thus build control
structures with directives.
Rewrote @else in consequence and added @elsif & @elsunless.
Added @switch, @case and @default.
Update @else tests
Add tests for @if..@elsif..@else structures
Enable adding directive preprocessors
Add directive preprocessor tests