put typedef value_type in container classes

for good measure
generic reduce() via decltype
typedef value_type
generic apply/filter/reduce functions

an a rather critical bug fix in Array::Array(size)