Use Array and not StringIO

For some weird reason I was using StringIO when I definitely should have been using Arrays. This changes all of that and stops using StringIO. This is a major change and warrants a minor version bump.

There is also an improvement on how the options are parsed when instantiating new objects. I've learned about the Hash.fetch() method, yay. This change affects nothing but quality of code readability...which is very important but not a breaking change.