Add a custom user service using an Apache htpasswd file for
authentication.

Add a new class HtpasswdUserService which implements custom
authorization against a text file created with the Apache 'htpasswd'
program.
Moved HtpasswdUserService.java to new source directory according to new
layout after direcory reorganisation since v1.2.1.
Adjusted to Constants.EXTERNAL_ACCOUNT.
Added dependency on commons-codec:1.7
Adjust account type to use general AccountType.EXTERNAL.

Use the new AccountType.EXTERNAL which is available since v1.3.0.
Use Keys file, added keys for htpasswd US.

Changed the htpasswd key from .file to .userfile.
Added keys to gitblit.properties file, relying on the build to include them in the Keys class. Swicthed to using Keys class in code.
Implement overriding local accounts with htpassd file.

Add option to overrride and overwrite an existing local account if the account is found as an external account, too.
Adjust method comments.
Fix problem with invalid MD5 passwords.

Fix a problem where specifying a wrong password for a user that has his password stored as Apache MD5 would result in an IllegalArgumentException.
User IStoredSettings instead of Gitblit. Changed realmFile variable name.

Implemented two suggestions:
Renamed the variable realmFile to htpasswdFile.
Store the IStoredSettings passed into setup() and use that instead of Gitblit in most places.
Add unit test for HtpasswdUserService.

Add unit test class for Apache htpasswd user service.
Add method getNumberUsers() to HtpasswdUserService which is only for use by
the unit test.
Change access to GitBlit.getFileOrFilder(String, String) to
GitBlit.getFileOrFolder(string) because the former would result in a
segementation fault during unit testing as the settings are not present in
GitBlit at that time.
Move setting of this.htpasswdFile from constructor to setup() for the same
reason as above.
Stop supporting crypt() and plain text passwords at the same time.

Disable support of plain text and crypt() encrypted passwords at the same
time. This caused problems because they both don't have an identifying
prefix in the htpasswd file. This means that when someone gleams the
crypt() hashes from the file she could log in using the hash as it would
successfully test against the stored hash using plain text comparison.

Now only either crypt() is supported or plain text but not both. Following
the Apache server, plain text is only supported on Windows and NetWare.
Otherwise crypt() is supported.

An undocumented setting key "realm.htpasswd.supportPlaintextPasswords" is
used for unit testing and could potentially be used to override the
OS-specific behaviour.
Make realm.htpasswd.userfile changeable without restart.

Move reading of realm.htpasswd.userfile key to read() from setup(). This
means it can be changed during runtime without requiring a restart, at the
cost of checking the setting on every read(), which currently is every
authentication.

Changing the setting will clear the current htpasswd user base. That means
that setting it to a non-existing file will also disallow logins from any
user in the old file. This is a conscious decision since we allow the case
of not having a htpasswd file at all and only reling on the backing user
service.
Add account type HTPASSWD.

Add and use account type HTPASSWD for Apache htpasswd user service.
Commit reordered entries of files generated by build.
Add an Apache htpasswd user service

Add a new class, HtpasswdUserService, which performs authentication
against a text file created with the Apache 'htpasswd' program.

Added dependency on commons-codec:1.7
Merge branch 'htpasswd'
Merge remote-tracking branch 'upstream/master'

Conflicts:
	build.moxie
	src/main/distrib/data/gitblit.properties
	src/main/java/com/gitblit/HtpasswdUserService.java