-use a 0-100 range for percentage regardless of how much we have to download (if we're resuming or starting fresh)
-prevent negative blocks or blocks_behind counts
-add get_component method to ComponentManager
-add override_components kwargs to ComponentManager
-add skip_components to ComponentManager
-change component_manager attribute to exist on the AuthJSONRPCServer instance instead of the class
* add daemon Component and ComponentManager classes
* convert directory and SQLiteStorage setup to be a Component
* support callbacks to component setups
* Fixed typo in ComponentManager
* convert wallet to be Component
* Use storage from session.
* Remove create_session internal function and PEP8
* Starting to convert session to its own component. Removed ref to `self.storage` from Daemon.py
* Making DHT component(broken)
* Refactored classes to reduce redundancy in getting config setting
* DHT is now it's own component
* Fixed `test_streamify` test
* Fixed regression caused by removing `peer_manager` from session
* refactor ComponentManager and Component to use instance instead of class methods
* Hash announcer, file manager, stream identifier components
* Query Handler and server components
* Reflector Component
* Fixed test_streamify(well Jack did, but ¯\_(ツ)_/¯)
* All tests now passing
* Pylint fixes
* Oops(That's all you're gonna get :-P)
* Making decorators(WIP, commit so that I don't lose work)
* Decorator made and decorating of functions done(some other changes)
* import fixes and removed temporary test function
* Fixed new broken tests from daemon refactor
* Sanitization of modules
* Reworded errors
* wallet unlock condition checks, fixed breaking changes
* Rebased on amster and other crazy stuff
* Started writing tests
* Tests for component manager
* Fix Daemon Tests
* Fixed passing mutable args in init
* Using constants instead of strings. Added CHANGELOG.md
* Now components can be skipped by setting relevant config in file.
* P-Y-L-I-N-T #angry_emoji