bugfix

Normally returning a pointer to a local variable is not guaranteed to work in all situations: it may be overwritten when something allocates something. I'm not sure if that's the case for arduino too.
I also changed make_hash so that it can hash any data, not just 0x00 terminated strings.
Also bit clean-up.