Extract text-selection, search and match logic from viewer.js

This commit pulls out TextLayerBuilder, PDFFindController, PDFFindBar, and a few other utility objects into their own files. This will make it easy for people to implement their own text-selection and search functionality.