Fix to allow email addresses as users names, Issue #163 #158

Added a regular expression to validate if the username is an email
address or not.  If the username is an email address then the username
will not be encoded/decoded.
Password Reset Functionality Added  - Issue #59

I have added password reset functionality in which the user will receive
an email with a link to reset their password.  This implementation uses
a hash of the user name and is only validate for an hour, it is tracked
using a global in-memory cache provided by the System.Runtime.Caching
namespace.  The email portion relies on validate SMTP settings to be
defined in the web.config.

Example -

<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="kyle.engibous@gmail.com">
<network host="smtp.gmail.com" defaultCredentials="false"
enableSsl="true" userName="kyle.engibous@gmail.com" port="587"
password="*********"/>
</smtp>
</mailSettings>
</system.net>

Would allow sending smtp mail through smtp.gmail.com with
kyle.engibous@gmail.com being specified as the from address.
Merge pull request #185 from kengibous/master

Fix to allow email addresses as users names, Issue #163 #156, Forgot Password Added #59