Support boolean and nil arguments

Adds support for boolean and nil objects as arguments.

For example, the client in something like
```ruby
# server
DNode.new({
    :f => proc { |cb| cb.call(false) }
}).listen(5050)

# client
DNode.new({}).connect(5050) do |remote|
    remote.f(proc { |x| puts x })
end
```
will now puts `=> false` instead of a Hash of the object's own methods.