Separation filters by levels

This branch divides filters by two layers: filters for days and filters for time. The main goal is to resolve case when developer have to specify two patterns: one for date and one for date with time. 

Example: 
  * other (?P\<principle\>{}) at (?P<applicant>{})
  * other (?P\<principle\>{}))

Now time will be applied automatically when string contains "at \<time_pattern\>". Otherwise filters.\_cut\_time will be called. 


Also were added little improvements:
   * generic_filter returns filter function decorated with @wraps to keep original function name and doc string for debugging purposes.
   * added new function add_pipe to register new pipes outside library code.