Fairness, Efficiency and Privacy in Energy Resource Allocation: Incentive Design and Machine Learning for Distributed Agents