Commit() outputs newly added keys in config source instead of throwing exception

parent #90 
It also reveals a problem when you add a new key-value pair and don't have a template to follow. If we start with an empty file and after loading config.ini I add a new pair
```c#
config.Set("key1:key2:key3", "val");
```
we don't know whether the user want
```ini
[key1]
key2:key3=val
```
```ini
[key1:key2]
key3=val
```
So I simply make it
```ini
key1:key2:key3=val
```