Replaced sprintf calls with dedicated code

Using **sprintf**, although convenient, generates a large amount of code. By replacing all **sprintf** calls with dedicated code, program size is reduced when widgets are used.

For example, for the following simple sketch the program size is reduced by 800 to 1000 or more bytes, depending on the version of the Arduino standard libraries used.

```C++
#include <MicroView.h>

MicroViewWidget *widget;

void setup() {
  uView.begin();
  uView.clear(PAGE);
  widget = new MicroViewGauge(32, 24, 0, 100, WIDGETSTYLE1);
  widget->setValue(50);
  uView.display();
}

void loop() {
}
```

Additional changes included:
- Added a **getValLen** method for widgets, which returns the print length for the current value, similar to the existing **getMaxValLen**.
- The value for widgets is now initialised to the minimum value, instead of 0, because 0 could be outside the specified range.
- Added **getValLen** and **getMaxValLen** keywords.
- The **MicroViewWidgetDemo** example sketch was modified to use the new **getValLen** method, plus a few other small changes.