Update float fields to cast strings more strongly

This is another another small behavior change to match my expectations as a client of this library

Today, float fields handle strings in a few funny ways, and this updates the gem to behave match my expecations. Again, would love some feedback on this approach.

1. Setting a float field from a string, is readable is readable as a string?

  ```ruby
  msg = SomeMessage.new
  # current behavior
  msg.float_field = "1.23"
  # => "1.23"

  # after this patch, my expected behavior
  msg.float_field = "1.23"
  # => 1.23
  ```

2. Setting a float field with a non-numeric string  does not raise any errors?

  ```ruby
  # current behavior
  msg.float_field = "asd"
  # => "asd"

  # after this patch, my expected behavior
  msg.float_field = "asd"
  # => ArgumentError
  ```

cc @jkingdon

Nice tests. The behaviors here look right to me, unless there is a reason I'm not thinking of for wanting something else.