Removed frontend.py from tracking as it is depreciated
Added .gitignore to help clean up git status queries
Improved dataMon comment header
Multiple files now tracked per logs, protoLog functionality folded in

Each log's singular dataDir string has now been replaced with
a dataDirs list.  (However, when a new log is created via the web
interface, it still passes a "dataDir" string, but on logcreation
this gets converted into a single entry list.)

"protoDirs" no longer in use, and the ProtoLog class functionality
has been folded in to ObsLog.

Default behavior now is to mark a log as active immediately on
creation with a list of dataDirs and an emtpy "activeDirs" list.
Each monitoring cycle, dataMon will try and look into the dataDirs
directories and try and find FITS files.  As soon as a new FITS
file is found, that directory will be added to the "activeDirs"
list, and a log entry will be written to note this.  The script
then cycles through each of the "activeDirs" and ingests new FITS
data every monitor cycle.  If a directory that was previously
accessible can no longer be reached, it is removed from activeDirs.

Since now logs can potentially have multiple directories, the
location of FITS files can no longer be inferred by association
with a particular log.  Therefore, fits entries and also "exclude"
log entries now story a "directory" attribute explicitly.

Misc: Changed weather polling to 60 minutes
showView -> cleanView makes more sense in routes
Major update: Initial version of admin login system

Created utilities/add_admin_users.py for really basic user addition
 - Passwords are hashed to MD5 on creation and when checking for access
 - Basic user entry looks like:
   {"username": username, "password": md5( password ).hexdigest() }

server.py:
 - Created a "/admin/login" POST route.
   - Expects a json encoded object like '{"username": "admin", "password": "123"}'
   - Returns 401 if model is wrong
   - Checks the username and md5 hashed password against the database
   - Returns 401 if their is no match
   - otherwise starts a session tracking this user
 - Created a "requires_auth" decoration function.
   - Makes sure that the user is logged in for functions that use it
 - Moved create_log down into the new admin section and wrapped it in "requires_auth"

Created a login model and view in 06_admin/00_login
 - Model simply encapsulate the initial auth request and stores success
 - View creates a simple window for entering the username and password
 - On submit, the view catches any errors in posting the auth info, showing the errors to the user
 - On success it redirects the user back to their previous route URL

98_routes.js:
 - Created "authed()" function which checks to see if an auth model has been created yet, and has "success" = true.  If it has, it returns true, if not, it redirects to "admin/login"
 - openLog(id) now simply opens a log given an ID.  No more mucking about with passing around model arguments, it's too ugly.
 - login route created to open up loginView and store an auth model on success
 - Wrapped "admin" and "admin/logs/create" routes in authed() calls to make them password protected

queue.js:
 - Error callback now catches 401 status, permission denied, and redirects the page to "admin/login"
 - user-defined success and error callbacks can now be passed in with a new request definition.  These will be executed after the in-built success and error functionality
 - A "preArgs" argument had to be created for calling Backbone.models.save().  Unlike other calls, where all the arguments are passed together as .fetch({options}), save has the form .save({model changes}, {options}), which meant that success and error callbacks couldn't be applied.  So i created the ugly "preArgs" option to denote that the two should be passed seperately
 - succ and err now pass back functions.  This way, (model, response) arguments can be used and passed on

02_createLog.js:
 - Folded model saving back into the view, and out of routes
 - encapsulated the save query into a queue request so that it would catch 401

startView.js:
 - Removed the "Create new Log" button

admin.js: Admin -> AdminView for clarity

index.html:
 - Added a link to the admin interface, and a link on the header back to the initial view
 - Added a template for the login window