Added collection-wide functions, observables, and properties

viewmodelcollection now supports function calling, observable get/set, and property get/set over the entire collection it manages. Setting properties/observables take a single value and set that property to that value for each VM in the collection. Return values for setting/function calls are an array of values, one element for each VM in the collection. To set a different value for each VM, iterate over the viewmodels and set the values yourself