Change OracleEnhancedOCIConnection#describe logic

Background:

  Some time ago, while running migrations and test schema preparations on one of internal Oracle setups,
    job wallclock times increased dramatically (in order of 10x). After some investigation it became
    apparent that problem was in OracleEnhancedSchemaStatements::create_table method - it took 40+ seconds to
    execute OracleEnhancedAdapter::table_exists? which itself is wrapper for OracleEnhancedOCIConnection::describe
    Though most probably, the time increase isn't directly related to ruby-oci8 or oracle-enhanced, as same problem
    was replicated in SQL Developer (which internally also translates 'DESC[RIBE]' to UNIONed SELECT), and is due
    to DB configuration/patches/size increases, current gem code can be improved a bit/this provides solution for
    this isolated performance drop.

Proposal:

  When using OCI8 interface and calling #describe on non-existant table (as is probably the most frequent case in
    test DB preparations and migrations), oracle-enhanced should not retry describe via SELECT-based `super` when no db link
    is specified and OCIException code is 4043 (object does not exist)

Signed-off-by: Aleksandrs Ļedovskis <aleksandrs@ledovskis.lv>
Merge pull request #375 from aledovsky/bug/oci8_describe_non_existant

Change OracleEnhancedOCIConnection#describe logic
Support `remove_columns`

`def remove_columns(table_name, *column_names)` is defined
in ActiveRecord::ConnectionAdapters::SchemaStatements, which does not
require Oracle enhanced specific implementation.

`def remove_column(table_name, column_name, type = nil, options = {})`
ignores `type` and `options` arguments to avoid ORA-00904 errors

See rails/rails#8267 for Rails change.
This commit should not backport into release14 branch.
Merge pull request #377 from yahonda/support_remove_columns

Support `remove_columns`