Adding support for viewpoint entropy

This adds a function to compute the [viewpoint-entropy](https://www.cs.ubc.ca/~heidrich/Papers/VMV.01.pdf) of a view after applying a rotation. The viewpoint-entropy is a measure for the amount of information shown by a view, based on the number of visible pixels for each object. High viewpoint-entropies result in more information shown.
A typical use case of this function is to sample a number of camera positions, evaluate the entropy, and chose a view that has maximum entropy.

In addition, a view based on the principal components of all CA atoms is computed in demo.js using [numeric.js](numericjs.com). While views created by the viewpoint-entropy depend on the current style, principal components only depend on atom coordinates and thus will always result in the same view for a given protein.