Always dup string/bytes values before encoding

We should always dup the string or bytes value before encoding because
we are `force_encoding` to BINARY encoding (ascii-8bit) which is
actually changing the value of the string if it contains unicode
characters.

Before this change, if a string or bytes field contained a unicode
character, that field was effectively corrupted from its source value
after the proto was encoded.

```ruby
resource = Test::Resource.new(:name => "\u20ac") # => {:name=>"€"}
resource.encode
resource.name # => "\xE2\x82\xAC"
resource.encode
resource.name # => ""
```

It should be noted this behavior is not present when the string
contains characters that fall inside the normal ascii range.

Fixes #120.
Merge pull request #120 from localshred/bj/120_fix_string_encodings

Fix string/bytes encoding when unicode characters present