Split getWeight into view and update functions
This MR splits the getWeight function into getWeight and getWeightAndUpdate which calls the former and removes a member from the members array if their weight is 0.
getWeightAndUpdate is called internally whenever weights are checked in order to prune the members array and keep it as small as possible.
This also renames setAvailability to toggleAvailabiltiy.
resolves #128 (closed) and #86 (closed)