Pass primitives by value

Pass the following by value:

    * bool
    * i8
    * i16
    * i32
    * i64
    * f64
    and optional<T> for all T of above