Handling of arbitrary real intervals [a,b]

Extended the existing code to handle arbitrary intervals [a,b]. Also
adjusted the class organisation to (a) both more closely reflect the
class structure of the original Matlab project, and (b) set the scene
for future support regarding the approximation of piecewise smooth
functions a la Chebfun v2.0.

More specifically, in the Matlab project, a "Chebfun" object consists of
one or more "Fun" objects, each "Fun" being a single-piece Chebyshev
interpolant on [-1,1], coupled with information about the domain of
definition [a,b]. I have been through what was previously constituted
the class "Chebfun" and changed this to "Fun", implementing along the
way all the adjustments necessary for handling of arbitrary intervals.
In order that the original user interface is retained, I have redefined
the class Chebfun to inherit from Fun. (Note, though, that inheritance
probably does not make sense as a way to implement a representation of a
collection of piecewise smooth Funs.

From the user's point of view, I don't think anything should have
changed.
Minor tidying up

Minor tidying
Ensuring compatibility with v0.2 unit tests

Modified class method names back to the original ones used by Olivier
(this was a source of many of the unit tests failing). At this point,
all but one of the unit tests is now working as before. Further updates
to come before the next pull-request.
Unit tests for arbitrary intervals

Added a range of unit tests for the arbitrary intervals functionality.
Restrict; Recursive Subdivision Rootfinding

Added functionality allowing a user to restrict a chebfun to a
subinterval of its definition and added a series of corresponding unit
tests. Also added a new implementation of self.roots() which utilises a
recursive subdivision approach. The rootfinding unit tests all pass as
before.
Tolerance check in self.same_domain()

Changed from equality check to an np.allclose() check.
cosmit
move Matlab's chebfun constructor to the end
more general cast_scalar decorator
move some methods inside chebfun class
fixups to prev commit
fix _add_operator (mixup from a conflict)
class in _add_operator
split into Fun/Chebfun
use values to check for nonzero
remove "cheb" prefix for general purpose methods
make restrict general
same_domain is a general method
default domain value
Fun -> Polyfun