couple of optimizations to OctreeElement::calculateShouldRender()...

* don't calculate the boundary logic unless you know you need it.
* you also know that the node boundary is always double the childBoundary, so you don't need to call boundaryDistanceForRenderLevel() you can just double the previously calculated childBoundary value

Savings of almost 2.5% of total running time!

====
**Before**
```
Running Time	Self		Symbol Name
93776.0ms   11.3%	14352.0	 	 OctreeElement::calculateShouldRender(ViewFrustum const*, float, int) const
43832.0ms    5.2%	6076.0	 	  OctreeElement::furthestDistanceToCamera(ViewFrustum const&) const
12086.0ms    1.4%	0.0	 	  <Unknown Address>
 9680.0ms    1.1%	1593.0	 	  OctreeElement::getLevel() const
 7550.0ms    0.9%	6532.0	 	  boundaryDistanceForRenderLevel(unsigned int, float)
 3661.0ms    0.4%	2019.0	 	  VoxelTreeElement::hasContent() const
 1189.0ms    0.1%	1189.0	 	  OctreeElement::isLeaf() const
```
**After**
```
Running Time	Self		Symbol Name
11140.0ms    8.8%	1760.0	 	 OctreeElement::calculateShouldRender(ViewFrustum const*, float, int) const
 6305.0ms    5.0%	848.0	 	  OctreeElement::furthestDistanceToCamera(ViewFrustum const&) const
 1078.0ms    0.8%	0.0	 	  <Unknown Address>
  596.0ms    0.4%	90.0	 	  OctreeElement::getLevel() const
  558.0ms    0.4%	304.0	 	  VoxelTreeElement::hasContent() const
  528.0ms    0.4%	464.0	 	  boundaryDistanceForRenderLevel(unsigned int, float)
```