Mesh: fix more append bugs caught while writing tests; see #19

A typo: we incorrectly checked the mesh `m` twice for indices, when
we wanted the `other` mesh. This caused the appension to fail in most
circumstances due to the incorrect choice for the `appendData` closure.

In the case of append(Mesh, IndexedMesh): we must check that the slice
of data we are indexing actually has some data, otherwise the `appendData`
closure will panic with index out of bounds when e.g. Colors do not exist.