Refactor map::shoot() to use string-based terrain id instead of oldter().

It was making stairs evaporate when you shot them. Reported by Ember on the forums.
Who knows what else it was doing.
It LOOKS extensive, but all I really did was take:
```
switch( oldter())
    old_t_foo:
        // do stuff;
    break;
```
and turn it into:
```
if( 0 == terrain.id.compare("t_foo") ) {
    // do_stuff;
}
```