Adds Derivative.as_finite_diff()

Hello,

this PR adds a ``sympy.calculus.finite_diff`` module containing functions for generating finite
difference formulae for approximation of derivatives of arbitrary order on arbitrarily spaced grids.

The functionality was motivated by this stack overflow question:

http://stackoverflow.com/questions/18701290/derivatives-discretization-with-sympy

In order to achieve this, I have implemented the algorithm from

Generation of Finite Difference Formulas on Arbitrarily Spaced Grids, Bengt Fornberg
Mathematics of compuation, 51, 184, 1988, 699-706 doi:10.1090/S0025-5718-1988-0935077-0

Please let me know what you think of this functionality

## Tasks

- [x] Better doc strings
- [x] fix typos: approxiamtion, defult, colosely
- [x] move to sympy.calculus
- [x] run PEP8 and fix errors reported
- [ ] rebase?