Better handling of cache invalidation on destroy, #171

When destroying, the cache invalidation needs to be done before the
destroy, otherwise the data used for invalidation is missing in the
database.
Remove datatable entries with only undefined values, #172

When converting an array to a datatable using Google's
arrayToDataTable(), if a column only has undefined values, the column's
type is set to string, which make the graph b0rk when the others are
numbers.
Better handling of the request status in the observer
Remove students without any results from the datatable data, #177