implement new detector to find broken immutable class.

immutable class which is annotated with @Immutable should:

1. be final to prevent from bad extending
2. have no non-final field

----

Squashed commit of the following:

commit 1b2309eb8f98670e8d6d9aa9685191b8ca90b8ad
Author: eller86 <skypencil+github@gmail.com>
Date:   Tue Jun 4 07:24:43 2013 +0800

    fix broken message.

commit 582c8a8b8b4883c4f4a56409d69c3deaddca51d8
Author: Kengo TODA <skypencil@gmail.com>
Date:   Mon Jun 3 20:52:17 2013 +0800

    stop using Exception to report bug.

commit ecfe349d9edfda27d9daf7113a020ff6c105d1f2
Author: eller86 <skypencil+github@gmail.com>
Date:   Mon Jun 3 15:55:26 2013 +0800

    improve error messages.

commit 0fc89a3e12a53ef6dd9b9fd074087f0c9209ef2e
Author: eller86 <skypencil+github@gmail.com>
Date:   Mon Jun 3 15:53:19 2013 +0800

    add Google Guava into package.

    To use Guava in plugin, our package (.jar) should contain
    classes of Guava. To implement it, we can use shade plugin.

commit f18822d4e3de76ec54bcfefed99b214aee6ce88a
Author: eller86 <skypencil+github@gmail.com>
Date:   Mon Jun 3 15:18:31 2013 +0800

    specify type of expected bug.

commit b2460488e4927eaa04424e0f16adf12071102508
Author: eller86 <skypencil+github@gmail.com>
Date:   Fri May 31 13:45:48 2013 +0800

    add detector for non-final immutable class and field
Merge pull request #4 from eller86/broken-immutability

implement new detector to find broken immutable class.