Separate and improve highlighting code

Change:
1) Moves highlighting code from Jekyll::Tags::HighlightBlock  into separate class
2) Fixes bug for 'rouge' highlighting
3) New highlighter options can be easily added
4) As example rewrites Jekyll::Tags::HighlightBlock to use new code

Separating highlighting code removes source duplicating and can be used in Jekyll extensions:
tags (Jekyll::Tags::HighlightBlock), converters (Jekyll::Converters::Markdown::RedcarpetParser) and various plugins.