Rewrite tests for ensure_inclusion_of

ensure_inclusion_of is pretty complex. Not only does it support two ways
of specifying valid values (in_array, in_range), but it also supports
multiple column types (string, integer, float, decimal, boolean).

When it comes to handling numbers and strings, ensure_inclusion_of has
very similar logic, and we can test these cases similarly.

We also do not have tests for handling regular Ruby attributes as
opposed to database columns (validates_inclusion_of works with both).
Those tests will be added in a future commit (related to #492), this commit
lays the groundwork for that.

----

NOTE: I realize there are many shared example groups here and that makes things pretty gnarly. I generally shy away from shared example groups unless I really need them, however it seemed like it was the simplest way to go about DRYing the code without writing a bunch of custom matchers or whatever. I am open to suggestions though.