Improved support for time when using Dynamic parameters

Implemented Time as the default time_fn for Dynamic parameters. This
is designed to serve as a useful shared time_fn across time varying
parameters in different parameterized objects. Also implemented the
Forever class to express infinite durations.
Fixed bug in the Time context manager
Extended comparison operators on Forever for safety
Implemented safe comparison between Time objects for use in parameterized.py
Cleaned up docs and whitespace
Deleted trailing whitespace
Using _infinitely_iterable attribute to avoid zipping infinite iterables
Renamed Forever to Infinity and explained why float('inf') cannot be used
Introduced param.random_seed for use in parameterized objects with random state
Simplified equality comparison between Time objects
Improved doctest example for Time and fixed bug in next method
Time object now supports nested context manager usage
param.Dynamic no longer assumes time_fn is monotonically increasing
Removed autostep from Time in favour of time_dependent flag on Dynamic
Setting Dynamic.time_dependent=False is now equivalent to time_fn = None
Changed signature of ParameterizedFunction.instance() to match signature of Parameterized.__init__(). ParameterizedFunction.instance() no longer accepts *args, and no longer erroneously passes *args to Parameterized.__new__(); see #48.
Merge pull request #49 from ceball/fix_parameterizedfn_new_args

Changed signature of ParameterizedFunction.instance() to match signature of Parameterized.__init__()
Fixed helper function for ParameterizedFunction.__reduce__; incorporates Chris Ball's changes in pull request 50
Minor note.
Fixed docstring discussing time types on param.Time