Strings without null-termination

When working with the Arduino String class, I've found that I couldn't efficiently combine it with some external libraries that explicitely pass `char*` and length around, without nul-terminating their strings. This prompted me to modify  and expose the `concat (const char* cstr, unsigned int length)` method, add a new `String(const char* cstr, unsigned int length)` constructor. While I was going over the string class, I found some other minor improvements, which are included here.