Checks for different values of tunable costs in loaded hashes

The format interface version FMT_MAIN_VERSION had to be bumped
to 12, to add new format methods returning the values of
tunable costs for a given salt.
A new parameter (array of strings) to describe the tunable costs
reported by the format has been added as well.
(This information is used for --list=format-detail and
--list=format-all-detail output as well as for warning
messages printed to stdout and to the log file.)

Even though hardly any format will need to report more than one
tunable cost, the format interface has been extended by
an array of functions, just to avoid the need to bump the format
version again every time we need to increase the maximum number
of tunable costs for a particular format.
Another reason is that I don't want to touch all the other
(several hundred) formats again if one or two formats need to
report more than one tunable cost.
So far, up to two different varying costs are checked.
format methods:
unsigned int cost[0](void *salt)
unsigned int cost[1](void *salt)

Currently bcrypt is the only format reporting a tunable cost
All the other formats use fmt_default_cost which just returns 1
as cost[0].
Those salted formats which support at least one tunable cost
will be adjusted in later commits.

Currently, john checks whether the loaded (uncracked) hashes
use different costs. If this happens, john prints
a warning (to stdout and into the log file), mentioning
the description of the tunable cost (or the number, starting at 1,
if no description is specified in the format definition), the
minimum and maximum value for that particular cost.

$ ./john --list=format-all-details --format=bcrypt
Format label                         bcrypt
Max. password length in bytes        72
Min. keys per crypt                  2
Max. keys per crypt                  2
Flags
 Case sensitive                      yes
 Supports 8-bit characters           yes
 Converts 8859-1 to UTF-16/UCS-2     no
 Honours --encoding=NAME             no
 False positives possible            no
 Uses a bitslice implementation      no
 The split() method unifies case     no
 A $dynamic$ format                  no
Number of test vectors               13
Algorithm name                       Blowfish 32/32 X2
Format name
Benchmark comment                    ("$2a$05", 32 iterations)
Benchmark length                     -1
Binary size                          4
Salt size                            20
Tunable costs                        iterations
Example ciphertext                   $2a$05$CCCCCCCCCCCCCCCCCCCCC.E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW

$ cat bcrypt.hashes
$2a$08$CCCCCCCCCCCCCCCCCCCCC.E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW
$2a$07$CCCCCCCCCCCCCCCCCCCCC.VGOzA784oUp/Z0DY336zx7pLYAy0lwK
$2a$06$XXXXXXXXXXXXXXXXXXXXXOAcXxm9kjPGEMsLznoKqmqw7tc8WCx4a
$2a$04$CCCCCCCCCCCCCCCCCCCCC.7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy

 $ ./john --fork=2 bcrypt.hashes --wordlist
Loaded 4 password hashes with 4 different salts (bcrypt [Blowfish 32/32 X2])
Hashes with iterations from 16 to 256
Node numbers 1-2 of 2 (fork)
Each node loaded 1/2 of wordfile to memory (about 12 KB/node)
Press 'q' or Ctrl-C to abort, almost any other key for status
2 0g 0:00:00:04 2.59% (ETA: 00:30:00) 0g/s 9.072p/s 37.52c/s 37.52C/s master..monday
1 0g 0:00:00:04 2.59% (ETA: 00:30:00) 0g/s 9.034p/s 37.37c/s 37.37C/s missy..monkey