Feature/charts loader

Closes #164
Initialize to empty array/object depending on what each promise returns so that angular doesn't lose the two-way binding, which it sometimes does if you init to null