Compare two BSTrees

Implemented the Binary Search Tree Comparison function, based
on iterative implementation of preorder traversal of two trees.
Had to refactor some code to do this.
Like, the process of making the bstree was put in a separate
function.
Also, stack.h had to be changed. It had a major flaw that the
"top" pointer was placed in this file only, so anyone including
this file will be limited to working with only one stack at a
time. I moved the top pointer to the file including stack.h and
made all the stack functions have this pointer passed as a
argument. Now, any file including stack.h can have as many stacks
as it needs.