Update shebang for all scripts for systems that do not ship with bash
Use CMAKE_DL_LIBS to support more platforms
Move apply() function from RuleSet to Processor

RuleSet becomes a pure collection of rules. It no longer is a messenger to 
pass ASTContext and ViolationSet to all the rules it consists of.
Move getting rule configuration logic back to RuleConfiguration

RuleBase doesn't need to know the configurations to concrete rules. 
So these logics are moved to RuleConfiguration, and rules now directly
ask RuleConfiguration for certain values.
Introduce RuleCarrier for carrying context around rule inspection

Move ASTContext and ViolationSet from RuleBase to RuleCarrier, so that
RuleBase becomes a pure interface but takes a RuleCarrier. RuleCarrier can 
be upgraded, but RuleBase interface will keep the same. 

In addition, methods like adding violations to violation set now are extracted 
to RuleCarrier, which makes more sense for logic separation.
Tests for RuleCarrier
Remove redundant using statement
Shorten long line code according to dogfooding
Extract AST related addViolation methods to AbstractASTVisitRule
Merge branch 'rule_carrier' into freebsd
Add linker info for FreeBSD system
Merge pull request #3 from lqi/rule_carrier

Introduce RuleCarrier
Use a more restricted syntax to satisfy dash
Merge pull request #4 from lqi/freebsd

FreeBSD Support