RoleLLM: Benchmarking, Eliciting, and Enhancing Role-Playing Abilities of Large Language Models