Adding class to retrieve information about a PHP files' class, functions etc...

The `AnalyzedFile` class analyzes a file for PHP constructs such as namespaces, classes, functions, etc.. when instantiated. This class will be used for doing theme analysis.

This class uses mostly regular expresssions under the hood to do the parsing. While tokens could've been used instead, using regular expressions allows us to do less parsing of the exact contents of functions and the like at the cost of a bit of obscurity.
Adding Analyzer metas.

Analyzer metas are designed to arrange and present meta information about the theme and files that does not reflect the result of a check or any part of the review.

There is a meta class for the different things we need to track meta information for. This includes things like files and functions. Each classes is customized slightly to best present its' information.

The `MetaGroup` class is a special class because it is designed to act as a container rather than a meta for a specific thing. It can be used to group similar metadata elements together.

After an Analyzer is run it should populate a number of meta items representing the data it has aggregated. These items will eventually be surfaced based on their hierarchy. (Each meta can be given child elements, and a child may belong to more than one parent.
Adding `BaseAnalyzer` class and the `PHPAnalyzer`.

The `BaseAnalyzer` class will be the parentclass of all analyzers (similar to `BaseScanner`).

The `PHPAnalyzer` analyzes the a php file for all of its functions, classes etc.. and adds all of the information to metas to be presented to the user.
Customizing the scanner classes to allow for specifications of analyzers for individual reviews.

Customizing the scanner classes so that we may now specify which things should be analyzed by a review, similarily to how we already specify which checks to run.

We now pass `register_review()` an optional second array which contains a list of Analyzers to run, in the same format as checks are already passed. Both the checks and the analyzers eventually get passed down to the `BaseScanner` class.

The `BaseScanner::scan()` function now takes an optional argument `$scanners` argument which specifies which scanners to run. By default it will run both `checks` and `analyzers` but changing the values in this array will change what is run.
Adding output of the analyzers to the UI.

Right now the output is just shown as a series of nested jQuery accordions. Working with @keoshi to make this easy on the eyes and useable.
Making the `AnalyzedFile` class more useful.

Changing the visibility of a couple of functions, and adding functions for requesting the post-processed file contents to catch things not cought by the analyzer.
Adding storing of entire ph contents to `AnalyzedFile`.

This is so that we can look at things like function calls and variables within the global scope.
Adding useful property accessors.
Adding `CustomResourceAnalyzer`.

The `CustomResourceAnalyzer` is used to analyze any custom capabilities, taxonomies, roles etc... used in a theme.

Added the `ResourceMeta` class to display the information from the `CustomResourceAnalyzer`.
Renaming *Meta classes to *Renderer.

*Renderer better explains the purpose of the class: to render information about an object. This should make the structure of the code easier to understand.
Adding prefix pattern detection to `RendererGroup`.

`RendererGroups` can now optionally attempt to identify sub patterns in their childrens names. This is usefull for finding non-prefixed function/filter/action names.
Renaming file to complete refactoring.

File was not properly renamed in 1c2c2cfb60adf6a2d5d17991d9a9a917a94d2964.
Escaping output before doing replacement in header text for AnalalyzerRenderer.

This is because the header text will already be output escaped. Therefore, if there are special characters in the header the string will not be properly replaced unless we escape the search string.
Fixing issue where files with identical names are skipped during analysis.

This is due to the fact that file metas are stored by their name. To fix this added an `AnalyzerRenderer::identifier()` function which returns a relatively unique string. The `FileRenderer` then overrides this, and instead returns the full filepath. In this way, duplicates are no longer a problem.
Renaming the existing `AnalyzedFile` class to `AnalazyedPHPFile` and creating new parent `AnalyzedFile` class.

The original `AnalyzedFile` class was not generic enough as it was specific to PHP. Now the `AnalyzedFile` class just contains helper functions and the hierarchical code parsing algorithm, but nothing specific to any language.

We can eventually create more subclasses of `AnalyzedFile` to analyze more file types.
Renaming css class for body in `AnalyzerRenderer`

"analyzer-group-body" should be "renderer-group-body".
Adding analysis for more custom resources.

Adding analysis for: shortcodes, CPTs, taxonomies, scripts, and styles.
Adding stats output to Renderers.

Had to add a container class for Renderer children (renderer-group-children) to apply the jQuery accordion to so that jQuery is not trying to collapse the stats `<ul>`.

Also added a "renderer-group-stats" class to contains the stats.
Adding total lines stat to `PHPAnalyzer`.
Adding filetype getter and comments regex abstract function to `AnalyzedFile`.

The new abstract `get_strings_and_comments_regexes()` function on `AnalyzedFile` fetches an array of regexes to be used when removing comments and strings.