Java Producer Provider

First pass at adding java producer functionality.  

A lot still needs to be cleaned up
This is not going to add the `result` to the `children` array in `Hermann::Producer` This block might need to be changed up to ensure we're not adding junk entries to `children`, e.g.:

```ruby
def push(value)
  if value.kind_of? Array
    return value.map { |e| self.push(e) }
  end
  
  result = nil
  if RUBY_PLATFORM == 'java'
    result = @internal.push_single(value)
    @children << result
  else
    result = create_result
    @internal.push_single(value, result)
  end
  return result
end
```