Store Boyer Moore no case strings as lowercase

Rather than convert Boyer Moore nocase search strings to lowercase on the fly, store them in lowercase.

Also converts the Boyer Moore API to take a Boyer Moore Context (BmCtx) since that stores the two arguments that were being passed in separately and allows fora simpler API.

Fixed a missing BoyerMooreCtxToNocase() in AppLayerProtoDetectPMRegister. Created BoyerMooreNocaseCtxInit() to cleanup other places BoyerMooreCtxToNocase()  was used.

Replaces PR 1030

Builds on Tile and on Trivis