Pass primitive types by value

* enum
* bool
* i8
* i16
* i32
* i64
* f64
and optional<T> for all T of above
README.md: fix inovke -> invoke typo
Merge pull request #37 from opatry/master

README.md: fix inovke -> invoke typo
Merge pull request #35 from skabbes/fix/pass_by_val_3

Pass primitive types by value