- Usage:
`map(C,D,f) or map(C,D,f,Degree=>d)`

- Function: map
- Inputs:
`C`, a chain complex`D`, a chain complex`f`, a function, a function such that`f(i)`is a matrix`D_i --> C_(i+d)`

- Optional inputs:
- Degree => ..., -- set the degree of a map
- DegreeLift => ...,
- DegreeMap => ...,

- Outputs:
- a chain complex map, a map of chain complexes
`D --> C`

- a chain complex map, a map of chain complexes

If the degree d is not given, then d=0 is assumed.

The function `f` is called only for those indices that represent spots occupied in both the source and target chain complexes.

This function does not check that the maps `f(i)` commute with the differential of the chain complexes.

- extend -- extend a module map to a chain map, if possible
- ChainComplex -- the class of all chain complexes