Humanoid Push Recovery: An Analytical Solution