AgentGen: Enhancing Planning Abilities for Large Language Model based Agent via Environment and Task Generation