Streamlined a few things and added user-defined illegal characters to call sig

## Streamlined:

- testing for unicode strings in python2 environments with a helper function
- illegal character replacement by merging all illegal char sets and running a single for loop with the union vs nested redundant replacements

### Reason:
Readability and a bit of a speed up re: the replacement 

------------------------------------------------

## Added:
- ability for user to include a list of illegal chars in the call signature

### Reason:
I needed to get rid of spaces in the file names and I imagine that others may have special needs as well.  Rather than replicate your awesome work I figured a couple small changes would add flexibility without  **TOO** much mission creep (hopefully). 
I almost want to change this function to use Python's built-in `any` or `all` functions.