Wrap function types in Options

Wraps function types in Options to make it possible to set them to null.

Changes code like
```rust
struct Func {
    function: extern "C" fn()
}
```
to
```rust
struct Func {
    function: ::std::option::Option<extern "C" fn()>
}
```
and
```rust
extern "C" fn set_callback(callback: extern "C" fn())
```
to
```rust
extern "C" fn set_callback(callback: ::std::option::Option<extern "C" fn()>)
```