Fixed incorrect array_diff handling in query builder caching mechanism

In query builder there is a function \_merge\_cache to merge cached filters with actual db filters. It utilizes array_diff() to find the diff between arrays of filters. As I researched, almost all the filters (except join filter) are not just arrays of strings (which array_diff() expects to accept) but nested arrays. This situation causing incorrect behavior and PHP warnings because array_diff() is trying to cast array to string. 
I wrote custom array diff function to check for nested arrays.

Signed-off-by: Kakysha <ezhikvdele@gmail.com>