Update logic that checks if a visit is a web bot
* Change preg_match to str search for performance and readability as recomended by note in http://us1.php.net/preg_match
* Check if user agent string is defined and not empty prior to to text comparisons against it
* Hook to allow override of bot detection will always be available instead of only when wpec decides visit is not a bot
Visitor profile expiration time advancement
* advance the profile expiration time whenever the last active time is being set to the current time
* timestamps can be passed as timestamp strings or as unix times
removed has_filter check
Fix: correctly initialize cart property in visitor class
Visitor profile setup sequence adjusted
* Don't setup customer or cart until the 'wp' action fires.
* This gives us the opportunity to check the conditional query variables and not create new visitor profiles when 404s or feeds are procecessed.
* Treat requests that are processed as 404s or feeds as bot requests
* This change gives us some resialiance during crawls that generate lot's of 404s.  For example planned security scans or unplanned malicious attacks.
Treat non-wpec ajax requests like bots, don't create visitor profiles if processing one
When processing an ajax request setup the user on the 'init' hook, when doing anything else setup the user on the 'wp' hook
Fixes for initialization changes
Merge pull request #892 from JeffPyeBrook/pr-visitor-meta

Profile expiration and bot detection enhancements