Completed documentation for all classes & added private constructor for dealing with empty selections

Also began testing that everything works. There is currently a bug with
animations.