added logic to allow successful enqueues and dequeues as long as no enqueue is made with a full queue or dequeue is made with an empty queue
fixed bug with size() method and cleaned up head/tail logic