fzsl:  break Scanner API from implementation

Separate the config rule based scanner from the expected scanner API.
This makes it clear that the Scanner class is meant to be extendable.
config:  update config to require scanner type

Currently only supporting 'simple' type scanners.
fzsl:  add support for plugins that define scanners

Allow the user to create their own scanners that derive from
fzsl.Scanner.  This allows for complex scanning implemented
directly in python.
make:  update sdist dependencies
core:  update readability and fix match end

Match end() is returning the index of the character after the match
ends, handle this and improve readability in some comprehensions
test:  add core tests
make:  exclude benchmark from make test
setup:  specify license
setup:  update manifest
make:  cleanup makefile