Changes:
Using built-in python list-sort. It's faster than the homebrew quicksort so that code was removed.

update_bbs was modified to compute the BB after calling update_bbs on its children. This is much faster than iterating through faces.

aabb_directional_tree is a subclass of AABBTree. It's only difference is
that it takes a direction in the constructor, and only subdivides along that axis. This sped up queries, but it means you need to create and maintain 3 copies. Since we'll typically only be intersecting once before updating bbs again, it won't be worth it. Still keeping the code though even though it's currently unused.

With the updates above and running some timing code, it looks like it'll take roughly 0.4 seconds to update the bbs and then compute intersections. This is still a tad slow for real time updates.