Engineering Agreement: The Naming Game with Asymmetric and Heterogeneous Agents