The differential lambda-calculus: syntax and semantics for differential geometry