Building types and preserving of feature tags

This closes http://trac.openstreetmap.org/ticket/4080 and, apparently, http://trac.openstreetmap.org/ticket/4021