Make Agent::getType a virtual method

To allow for more flexibility when subclassing it