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 #376 from yahonda/backport_375_to_release14

[backport to release14] Change OracleEnhancedOCIConnection#describe logic
Order view output alphabetically
Add `FORCE` option at `CREATE OR REPLACE VIEW` in structure_dump_db_stored_code
because it is quite difficult to dump views to satisfy dependencies.

Views created with FORCE option may be invalid,
which should be implicitly recompiled at the first time they are used.
Merge pull request #379 from yahonda/backport_378_to_release14

Backport #378 to release14 branch