Profile expiration and bot detection enhancements

* 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
* 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

**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 processed.
* Treat requests that are processed as 404s or feeds as bot requests
* This change gives us some resilience during crawls that generate lot's of 404s.  For example planned security scans or unplanned malicious attacks.
* Detect non-wpec ajax requests, don't create visitor profiles if doing a non-wpec ajax request