Setting an existing value to fill() should erase it

Passing set() a fill value would leave any existing value at that address unchanged
Don't rely on sscanf() for conversion from hex to binary

Using sscanf() with a std::string iterator is a bit messy and not entirely platform independent. This implementation is much longer, but is completely platform independent and probably a bit faster than sscanf().
Renamed hex_data::isset() to is_set()

‘isset’ conflicts with a macro in libc. For some reason nothing ever complained about it before, but now Xcode 6 is making a fuss. I probably need to rewrite a lot of this code.