Knowledge-enriched, Type-constrained and Grammar-guided Question Generation over Knowledge Bases