Fix set_value to empty to behave like delete_value

@benoitc this is for benoitc/econfig#6
This was fun! I added a bunch more tests. Oh and I'm fully open to code review feedback if something can be made better.