Determining what is and what is not a vector expression terminal

This is now done by consulting a struct template `is_vector_expr_terminal<>`
rather than hard-coding terminal types into vector expression grammar.

refs #37
Generation of kernel name

Each component of a kernel name corresponding to a terminal is obtained through
call to `kernel_name<Term>::get()` function instead of hard-coding it inside
vector_name_context.

refs #37
Textual representation of vector expression

String representation of a vector expression terminal is obtained through call
to `partial_vector_expr<Term>::get()` function instead of hard-coding it inside
vector_expr_context.

refs #37