Raise more informative exception in Table value formatting if type and format mismatch

Implementing Issue #2868:

Implementing raising TypeError upon nonworking format string instead of value error, handling it above the point where it was originally raised to include information about the exact point of failure.

Additionally getter and setter were implemented to raise the error as soon as it can be determined to not work (aka when setting it).

Format is checked for all existing entries in case of np.object-ish and for one entry for other types as this should be sufficient and more efficient for large tables.
I'm not exactly clear what this line is supposed to do--is this just checking that the dtype is object?  As is this will always return `False`--`type()` returns a class, and you're just comparing that class to a bunch of strings.