AgileMapper: a zero-configuration, highly configurable, transparent, id-aware object mapper