Simplify definition of new terminals

Kernel generation driver functions now differentiate between terminals
that are values and terminals that have values (vector<T> is both a
terminal and a value, but proto::terminal<int> is a terminal that holds
a value).

Helper functions for kernel generation are now called with appropriate
arguments (either terminal itself, or proto::value(terminal).
Replaced tabs with spaces
Use of integral constants in vector expressions

An expression like

    x = 42;

will result in a kernel that will take a global pointer (x) and an int
(42) as parameters. The second parameters may be optimized away by
explicitly telling VexCL that 42 is constant:

    x = std::integral_constant<int, 42>();