Direct Token Optimization: A Self-contained Approach to Large Language Model Unlearning