1.2

Still in progress, this branch brings:
- [x] CLI is now based on subcommands
- [x] Database is locked only when executing tasks (you can now run series reports etc. while another instance is running)
- [x] Old lockfiles are ignored if the PID that created them is no longer running
- [x] Executions from the CLI will pass the job to a running daemon

Still TODO:
- [ ] fix webui for new system
- [x] consider best api for plugins to register their subcommands (might be okay already, dunno)
- [x] make sure all unit tests still work
- [ ] add some new unit tests
- [x] remove movie_queue force option (CLI for it is already gone)
- [x] ~~make a `clear` subcommand for clearing things like backlog and remember_rejected~~ not needed, we have reset-plugin
- [x] redo archive plugin CLI
- [x] refactor --log-start to a plugin
- [x] refactor --check into its own command
- [x] register plugins in an event
- [x] don't run subcommands with an event
- [x] refactor schedule text parsing out of PeriodicJob, have job just use the dict form
- [x] ipc (implemented, needs a bit more review and testing)
- [x] caches, including cached_input, cookies cache, exists_movies cache. Is a timed cache good for all of these? How long?
- [x] make_rss, how should it work now? (we really need summary plugin, don't we)
- [x] should there be a start and end event for running `flexget execute` or `daemon`. Maybe `manager.execute|daemon.start|end` events? For example, memusage and cronenv plugin needs to be fixed somehow (oh, I guess we had manager.execute.started and completed, I guess bring those back for the cli command and add similar for daemon) left daemon out for now, till we need it
- [x] max_reruns plugin needs fixed, maybe we need a task phase that happens after all reruns are complete?
- [x] fix anything else using process_start or end still
- [x] `flexget daemon` should set default log level to info
- [ ] task priority... (i.e. priority plugin) what to do? [(current hack)](https://github.com/Flexget/Flexget/blob/4509aabe96d6b3a52945886cb564aaea3099095a/flexget/scheduler.py#L131)
- [x] ~~Accessing manager instance from webui... how to do it best?~~ later
- [x] rename presets to templates
- [x] implement root level config validation
- [x] include plugin files aren't validated right now
- [x] scheduler needs to persist last run time of each task
- [x] Schedules should support listing tasks like --task option, with wildcards
- [x] cli interface for ipc daemon shudown
- [x] Implement authentication for IPC (daemon should store secret in lock file that client needs to use to connect)
- [x] ipc server should automatically pick an open port if one is not explicitly specified
- [x] catch sigterm and shutdown (abort current running task cleanly if possible)
- [ ] remove deprecated things (api v1, ~~old string replacement~~, old validators?)
- [x] add version system to IPC to detect compatibility between client/daemon
- [ ] config pre-check doesn't like our schedule form. Says line is likely missing ':' at the end
- [x] We don't have a lock on the database at manager.startup, but some plugins may write to the db. Fix.
- [x] Verify tasks are only launched according to their schedule when run in daemon/webui mode.