Generalize the external viewer framework.

New viewers should be attached in

a) view/template/feed_data_browser_file_item_viewers.php
   for file-based viewing

b) view/template/feed_data_browser_directory_item_viewers.php
   for directory-based viewing

For directory-based viewing, a folder containing dicoms gets detected but Slice:Drop is not fully hooked up for that yet. We need to generate a scene.json with the appropriate paths and tokens for each slice and then pass it to Slice:Drop.