mapnik::value + add move ctor
mapnik::feature + pass attributes by r-value.
+ small optimization - pass and return const ref
mapnik::value

to_expression_string - add missing specialization
for mapnik::value_integer and remove usage of std::stringstream
+ expression_optimizer (experimental)

at the moment very basic ops are supported e.g

```
expr = 1+1+1 ---> expr = 3
expr = 1+1+[ATTR] ---> 2+[ATTR]

expr = [ATTR] + 1 + 1  ---> ([ATTR] + 1) + 1  ### stays unchaged
expr = [ATTR] + 1/3.14159 + 1 ---> ([ATTR] + 0.31831) + 1
```
+ re-arrange expression
+ make default ctor nothrow
+ format
Add test for image.fromstring - refs #1805
+ hold actual values in expressions tree (experimental)
  (result gets converted to mapnik::value)
reduce libary size by passing -fvisibility-inlines-hidden - closes #1832 - refs #1826
+ potential boost::variant optimization
+ fix writing to std::stringstream

* if seeking pass the end  - grow buffer (stringstream!)
* seekp beyond current buffer size doesn't set failbit (clang/libcxx)
TIFF I/O

+ use c++ casts
+ better naming
+ better naming
TIFF I/O

+ use generic std::istream
+ add open from char const* and size factory method
+ comment out as msvc++ doesn't support 'noexcept'
* restore operator%= support - explicit pnoenix::construct<mapnik::expr_node> on rhs
* move fwd decl into main mapnik namespace
* c++ style formatting
+ prefer ```const& ``` style (mapnik c++ style)
Geometry/Feature parsers -truncate 'where' message in on_error handler (currently 16 chars max)
+ add feature_parser.cpp