Use Showable objects instead of making Strings

This is a big change, so I bumped the version number to 3.0!

Instead of returning a String, the paint methods now return ANSIStrings, which get turned into Strings when used in a format! or println! statement, or anything else that uses the std::fmt::Show interface. This saves allocating Strings all over the place.

You'll have to use .to_string() on the object that gets returned from paint, if you want to keep the string.