Instance method of ParameterizedFunction now allows param inheritance

When creating an instance of a ParameterizedFunction from an existing
instance all parameters except for the name will be inherited.
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