Set up playground for type deduction experiments

refs #53
Partially works for terminals, still need to deal with expressions.
Logical expressions are easy

refs #53
Added nary expressions

refs #53

Assume that type of the nary expression result is the common type (in
std::common_type sense) of all operands.
Moving deduce_value_type transform to vexcl/operations.hpp

refs #53

I am convinced at this point that expression type deduction with Proto
transform is possible, so I am moving the mechanics to operations.hpp
and creating test for the type deduction correctness.
Use value_type provided by a terminal for type deduction

refs #53
User-defined functions have return type as part of signature

refs #53
Type deduction for ternary operator

refs #53
Type deduction for builtin functions

refs #53

Current implementation assumes that the return type of a builtin
function is the common type (in std::common_type sense) of its
arguments. This should work in most cases but could fail for some
functions.
Provide shortcut metafunction for type deduction

refs #53
Adds support for return type deduction for all terminals

refs #53
Fixed return type deduction for user functions

refs #53
The Boost.Preprocessor version of UserFunction lacked definition of
value_type.
Moved multiexpression assignment logic out of multivector

This will allow to drop non-owning multivectors and use general tied
expressions instead (see #53).
Mltivectors always own their data now

Non-owning mutivectors were used to facilitate vex::tie operation (tiyng
together several vectors to update them in single OpenCL operation).
This functionality is now provided by vex::expression_tuple.

refs #53
Dropping MPI support

MPI-based types have been moved to 'mpi' branch.
Minor bugs fixed
Added test for tuple of writeable expressions

refs #53
Automatic type deduction for temporary expressions

refs #53

This changes interface of vex::make_temp<> slightly:

1. Templated parameters are now in different order: first tag, then
   temporary type.
2. The Tag template parameter is now required.
3. The type of the temporary may be omitted, in which case it will be
   deduced from the supplied expression.