A General Purpose Data Assimilation Facility: DART