Auto-Differentiating Linear Algebra