Support adding a priority queue for JLayout paths

@phproberto see what you think

## Testing Instructions
1. Test current JLayouts continue to work as expected with no new issues
2. Test creating a JLayout in a weird file path and then add using a priority queue.
berto see what you think

## Testing Instructions
1. Test current JLayouts continue to work as expected with no new issues

2. Test using a priority queue works
 e.g. Move the layout in /root/layouts/joomla/content/icons.php to a new location (not something that is currently recognized). Then edit the following https://github.com/joomla/joomla-cms/blob/staging/components/com_content/views/article/tmpl/default.php#L67

```
$layout = new JLayout('joomla.content.icons');
$paths = new SplPriorityQueue;
$paths->insert('path/to/new/location');
$layout->addIncludePaths($paths);
$layout->render(array('params' => $params, 'item' => $this->item, 'print' => false));
```
And the Jlayout should load from the location ```path/to/new/location/joomla/content/icons.php```

If you want as a further test you can do the same thing except change $paths from being a ```SplPriorityQueue``` to being an array by changing the previous code to

```
$layout = new JLayout('joomla.content.icons');
$paths = array('path/to/new/location');
$layout->addIncludePaths($paths);
$layout->render(array('params' => $params, 'item' => $this->item, 'print' => false));
```

and checking this 'old' way of doing things also works as expected

## FAQ
The reason I made the private function is because in the future a setIncludePaths() function will likely be added that will need to utilise the same code and therefore I'm abstracting it away in a method in anticipation of this.